• 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

Object Storage Arubacloud
0 głosów
579 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 104 wizyt
pytanie zadane 21 listopada 2019 w C i C++ przez Wiktor Michalski Początkujący (430 p.)
0 głosów
0 odpowiedzi 138 wizyt
0 głosów
0 odpowiedzi 175 wizyt

92,556 zapytań

141,404 odpowiedzi

319,563 komentarzy

61,942 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...