• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Snake - generowanie jabłka poza ciałem węża

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
358 wizyt
pytanie zadane 23 kwietnia 2015 w C i C++ przez LislaV Bywalec (2,400 p.)
zamknięte 26 kwietnia 2015 przez LislaV

Cześć. Piszę grę typu Snake i mam problem z generowaniem jabłka (tzn. tego, co trzeba zbierać, żeby wąż się wydłużał), żeby nie wygenerowało się na 'ciele' węża. Generalnie sprawa wydaje się prosta. Mój kod odpowiedzialny za to:

void Apple::setNewPosition()
{
    srand(time(NULL));
    bool repeat = false;

    do
    {
        int x = rand() % 24;
        int y = rand() % 21;
        position.x = 10 + x*size;
        position.y = 90 + y*size;

        if (snake.getHeadPosition() == position)
            repeat = true;
        else
        {
            for (int i = 0; i < snake.getLength(); i++)
            {
                if (snake.getBodyPosition(i) == position)
                    repeat = true;
            }
        }
    } while(repeat);

    apple.setPosition(position);

}

i jeszcze wywołanie tego
 

bool Engine::snakeAteApple()
{
    if (snake.getHeadPosition() == apple.getPosition())
    {
        snake.makeLonger();
        apple.setNewPosition();
        iScore++;
        return true;
    }
    return false;
}

 

Według mnie to powinno działać, ale jednak czasem zdarza się, że to jabłko wygeneruje się na ciele węża. Jakieś pomysły? 

komentarz zamknięcia: Rozwiązałem ten problem

1 odpowiedź

0 głosów
odpowiedź 23 kwietnia 2015 przez wojciech.szlosek Użytkownik (960 p.)
Bardzo możliwe, że komputer sam z siebie nie chce generować czasem jabłka poza ciałem węża. Zdaża się czasem tak, że wszystko działa prawidłowo???
komentarz 23 kwietnia 2015 przez LislaV Bywalec (2,400 p.)
Tzn. jak sam z siebie? Po to jest ta pętla, żeby gdyby nawet wylosowało pozycje na ciele węża to losować aż do momentu, kiedy wylosuje poza ciałem. Generalnie to działa prawidłowo, tylko czasem zdaży się, że wygeneruje się w ciele. Czyli nie działa prawidłowo :P
komentarz 23 kwietnia 2015 przez wojciech.szlosek Użytkownik (960 p.)
Więc nie widzę problemu. Czasami zdarza się, że jabłko generuje się w ciele, ALE komputer nie jest tak inteligentny jak człowiek :D
komentarz 23 kwietnia 2015 przez LislaV Bywalec (2,400 p.)
A ja widzę. Zadaniem programisty jest wyeliminowanie wszelkich błędów z programu ;)

Podobne pytania

0 głosów
0 odpowiedzi 76 wizyt
pytanie zadane 21 listopada 2019 w C i C++ przez Wiktor Michalski Początkujący (430 p.)
0 głosów
0 odpowiedzi 112 wizyt
0 głosów
0 odpowiedzi 133 wizyt

90,818 zapytań

139,493 odpowiedzi

313,553 komentarzy

60,311 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...