6 svar
144 visningar
mekatronik 618
Postad: 12 maj 2022 14:50

Snake spel - C programmering

Hej, jag undrar ifall någon kan förklara varför man använder dessa villkor i if satsen? Detta är ett snake spel och detta är funktionen som listar ut ifall ormen har krockat med väggen eller inte.

bool snake_hit_wall(snake_t *the_snake) {
if ((the_snake->head->y<0 || the_snake->head->y > GAME_MAX_Y-1) || (the_snake->head->x<0 || the_snake->head->x > GAME_MAX_X-1)){
return true; 
}

Jag förstår inte varför man använder de villkoren innanför if satsen, jag vet att GAME_MAX är hela världens definerade storlek (vilket är 500x500) så jag antar att man jämför the_snake->head->x/y med GAME_MAX. Men varför tar man också -1 och varför kollar man ifall den är mindre än noll?

Tack!

Macilaci 2106
Postad: 12 maj 2022 16:37

Villkoren testar om ormens huvud är inom spelplanen eller inte.

Det är OK att ha 0 <= x <= 499 och 0 <= y <= 499.

Det är vanligt att index börjar med 0.

mekatronik 618
Postad: 12 maj 2022 18:21
Macilaci skrev:

Villkoren testar om ormens huvud är inom spelplanen eller inte.

Det är OK att ha 0 <= x <= 499 och 0 <= y <= 499.

Det är vanligt att index börjar med 0.

Jaha okej, det är nog logiskt då. Betyder det då att hela världen är en sorts matris/array?

Fermatrix 7841 – Fd. Medlem
Postad: 12 maj 2022 19:03

Utan att veta hur hela koden ser ut så är det svårt att säga.

Ditt fönster har ju en längd och en bredd. Ormens huvud har ju en koordinat P:(x,y) som hänvisar till dens position relativt ditt fönster. Skulle nu ormens huvud ha samma koordinat som bredden eller längden av ditt fönster måste vi behandla detta just för att om bredden är 500 och ormen befinner sig på position 501 i x-led så är ju ormen nu helt plötsligt utanför ditt fönster.

Laguna 28563
Postad: 12 maj 2022 20:03

Hela världen består av punkter som anges med heltalskoordinater. Ett enkelt sätt att representera ormen är att ha en matris för världen och använda något speciellt värde för att ange att en bit av ormen finns där. Mat till ormen kan representeras med ett annat värde i matrisen.

Men man kan använda andra sätt, t.ex. ha ormen som en länkad lista, så världen måste inte vara implementerad med en matris.

mekatronik 618
Postad: 12 maj 2022 20:45
Laguna skrev:

Hela världen består av punkter som anges med heltalskoordinater. Ett enkelt sätt att representera ormen är att ha en matris för världen och använda något speciellt värde för att ange att en bit av ormen finns där. Mat till ormen kan representeras med ett annat värde i matrisen.

Men man kan använda andra sätt, t.ex. ha ormen som en länkad lista, så världen måste inte vara implementerad med en matris.

Ah okey! Tack för förklaringen, det här spelet är ungefär 5 olika filer cirka 5-6 A4 med kod så det är väldigt svårt att hitta vad det är för typ av värld...

Laguna 28563
Postad: 12 maj 2022 20:51

Det är ett litet program, fast jag skulle nog kallat det småstort för ett antal år sedan. Skriv ut det och begrunda och rita pilar och kommentarer på det.

Svara Avbryt
Close