Et simpelt array som driller mig
Jeg er næsten helt grøn i C (og her på eksperten.dk), men jeg er gået i gang med at lave mit første spil (snake i tekstmode). Jeg er kun lige startet, før så melder den første udfordring sig. Jeg vil gerne bruge et array til at holde styr på hvor min slanges X antal led befinder sig.Men jeg har indtil videre ikke kunne få det til at virke, hvilket har resulteret i at jeg er kommet helt væk fra mit originale snake-spil, og har i stedet lavet en masse små programmer til at hjælpe mig med at forstå hvordan et arrray fungerer.
Og her er det jeg har brug for jeres hjælp, jeg kan simpelthen ikke forstå hvorfor nedenstående program ikke virker efter hensigten. Grundideen var at fylde et array op, med tal som svarer til x-y koordinater på skærmen. Men efter at have fyldt arrayet op, er næsten alle koordinaterne forkerte.
Hvis i prøver at køre programmet kan i se at arrayet bliver fyldt helt forkert op. Der bliver både skrevet forud for, og bagved der hvor det var tænkt at værdierne skulle stå i arrayet. Efter endt kørsel skulle der på skærmen have stået:
9,3
8,3
7,3
6,3
5,3
4,3
men i stedet står der:
9,8
8,7
7,6
6,5
5,4
4,3
Hvorfor?
-------------------
#include <stdio.h>
#include <conio.h>
int array[6][1];
void main(void)
{
clrscr();
int storelsex=18, storelsey=6;
gotoxy(30,10); cprintf("array nu (x,y):");
gotoxy(12,3); cprintf("<-- koordinat punkter");
for(int i=0;i<=5;i++)
{
gotoxy(storelsex/2-i,storelsey/2);
array[i][0]=storelsex/2-i;
array[i][1]=storelsey/2;
cprintf("%d", i);
//test
gotoxy(1,1); cprintf("%d,%d", array[i][0], array[i][1]);
gotoxy(35,12); cprintf("%d,%d", array[0][0], array[0][1]);
gotoxy(35,13); cprintf("%d,%d", array[1][0], array[1][1]);
gotoxy(35,14); cprintf("%d,%d", array[2][0], array[2][1]);
gotoxy(35,15); cprintf("%d,%d", array[3][0], array[3][1]);
gotoxy(35,16); cprintf("%d,%d", array[4][0], array[4][1]);
gotoxy(35,17); cprintf("%d,%d", array[5][0], array[5][1]);
gotoxy(2,20); cprintf("%d storelsex/2-i", storelsex/2-i);
gotoxy(2,21); cprintf("%d storelsey/2", storelsey/2);
getch();
}
}