Forum: [C++] If-sats med ökande värde

Forum huvudsida -> Programmering -> [C++] If-sats med ökande värde

Sidor: 1

Till botten

Orre 17:22 - 16:e Mars 2008 | Post #1
Medlem
Inlägg: 5


Skicka PM
Läste era mycket givande nybörjarguide i c++ och SDL för ett tag sen och påbörjade ett projekt som på grund av tidsbrist har legat vilande ett tagSmiley Men det jag undrar nu är hur man enklast gör om man vill upprepa en if-sats flera gånger fast med ökande värden.

  1. if (emoX == 197 && emoY == 28)
  2. {
  3. gr1[25] = 0;
  4. }
  5. if (emoX == 212 && emoY == 28)
  6. {
  7. gr1[26] = 0;
  8. }
  9. if (emoX == 227 && emoY == 28)
  10. {
  11. gr1[27] = 0;
  12. }
  13. if (emoX == 242 && emoY == 28)
  14. {
  15. gr1[28] = 0;
  16. }
  17. if (emoX == 257 && emoY == 28)
  18. {
  19. gr1[29] = 0;
  20. }
  21. if (emoX == 272 && emoY == 28)
  22. {
  23. gr1[30] = 0;
  24. }

Alltså ungefär nåt sånt här, men utan att behöva skriva ut samma if-sats flera gånger och ändra värderna.

Tack på Förhand Smiley

-------------------------
"Skeppen hänge där i luften på ungefär samma sätt som tegelstenar inte gör"

1f u c4n r34d th1s u r34lly n33d t0 g37 la1dSmiley




Python 17:49 - 16:e Mars 2008 | Post #2
Medlem
Inlägg: 157


Skicka PM
EDIT: Oj då jag läste inte koden riktigt noga.
Jag svarade på fel fråga. Men lycka till i alla fall.

-------------------------
-------------------------

Senast redigerad 20:54 - 16:e Mars 2008


Orre 18:06 - 16:e Mars 2008 | Post #3
Medlem
Inlägg: 5


Skicka PM
    Citat av Python:
Skapa en X och en Y variabel. som du sedan kan ändra.
Lycka till med vad jag förmodar att är ett spel.Smiley


Jo du har helt rätt det är ett halvtaskigt pacman-liknande spel.

Hm jag förstod inte riktigt hur du menade med att skapa en x och en Y variabel. Var ska dessa läggas in sen?

Det jag vill åstakomma är att när min pacman rör sig över prickarna jag har ritat ut så skall värdet för den pricken sättas till 0 och försvinna.

-------------------------
"Skeppen hänge där i luften på ungefär samma sätt som tegelstenar inte gör"

1f u c4n r34d th1s u r34lly n33d t0 g37 la1dSmiley




ozamosi 19:31 - 16:e Mars 2008 | Post #4
Administratör
Inlägg: 1129


Skicka PM
Vad jag förstår är din spelplan från källkodens synpunkt en massa rutor på 5x5 pixlar i en tvådimensionell rymd.

Till att börja med föreslår jag att du organiserar dina kakor på samma sätt: gör om grl till en array av arrayer, där den första arrayen är lika lång som antalet rutor i bredd, och de inre är lika långa som antalet rutor i höjdled. Om jag minns rätt skriver man för att skapa det
int grl[30][20];
för en spelplan på 30x20 rutor. Minns jag inte rätt kan någon annan rätta mig.

Nästa steg är att skapa variabler för vilken ruta du är på i höjdled, och vilken ruta du är på i bredd - emoX och emoY visar pixlar, så subtrahera bort storleken på ramar och annat som är runt spelplanen, och dividera på fem. Dvs något i stil med följande strax innan alla dina if-satser:
int ruta_x = (emoX - 152)/ 5;
int ruta_y = (emoY - 122)/5;
Du måste såklart ersätta mina påhittade siffror med de som faktiskt stämmer - och jag rekommenderar att du skapar konstanter med de värdena i början av källkoden, så det blir lättare att ändra på det.

Finessen med det här är att nu kan du ersätta hela ditt if-sats-träd med följande rad:
grl[ruta_x][ruta_y] = 0;


-------------------------
Ljusblå

Senast redigerad 19:33 - 16:e Mars 2008


Orre 21:01 - 16:e Mars 2008 | Post #5
Medlem
Inlägg: 5


Skicka PM
Ok tror jag förstod ungefärSmiley

men sen när jag ska rita ut prickarna vad ska jag skriva för värden då?

det blir ju nånting sånt här
  1. if ( )
  2. DisplayDots(screen, "dots.bmp", , );


men vad ska förutsättningen vara för att den ska ritas ut och vad ska jag skriva som koordinater?Smiley

-------------------------
"Skeppen hänge där i luften på ungefär samma sätt som tegelstenar inte gör"

1f u c4n r34d th1s u r34lly n33d t0 g37 la1dSmiley




FunkyChicken 21:29 - 16:e Mars 2008 | Post #6
Nyhetsredaktör
Inlägg: 800


Skicka PM
  1. for(int i = 0; i < 30-1; i++)
  2. for(int j = 0; j < 20-1; i++)
  3. if (grl[i][j])
  4. DisplayDots(screen, "dots.bmp", i*5+152, j*5+122 );


Typ. Där de "magiska siffrorna" förstås byts mot dina konstanter som ozamosi föreslog så blir koden lite lättare att underhålla. Här har du också svaret din fråga, hur man gör flera if-satser i rad - man använder loopar.




Orre 22:30 - 16:e Mars 2008 | Post #7
Medlem
Inlägg: 5


Skicka PM
Ok Tack för hjälpen, får väl testa så fort jag kommer hem Smiley

-------------------------
"Skeppen hänge där i luften på ungefär samma sätt som tegelstenar inte gör"

1f u c4n r34d th1s u r34lly n33d t0 g37 la1dSmiley




Sidor: 1

Forum huvudsida -> Programmering -> [C++] If-sats med ökande värde
Atom feed

Du får inte posta i den här tråden | Till toppen