我是 C 的初学者,在尝试制作一个简单的蛇游戏时,我偶然发现了在另一个函数中使用时指针值变化的问题。我用指针来养我的蛇,我用了其中的 3 个。诚然这对于蛇类游戏来说可能是一个非常愚蠢的算法,但我觉得我快到了,但我不知道出了什么问题。我为蛇本身使用了 3 个点,蛇的每个部分的 x 坐标以及 y。我不妨只发布我的代码的一部分。
#include<stdio.h>
#include<dos.h>
#include<conio.h>
printer(int *forgoodness,int *y,char *lang,int tx,int ty, int *x)
{
int h=*forgoodness-1,g=0;
这里的值发生了变化,x 以某种方式复制了 y 的 6 个值。
/* for(;g<15;g++)
{
printf("%i",x[g]);
}*/
for(;h>=0;h--)
{
gotoxy(x[h],y[h]);
printf("%c",lang[h]);
}
gotoxy(tx,ty);
printf(" ");
}
main()
{
int transferx=1,x=1,transfery=1,ch,game=0,dir;
int *transx, *transy, *numel;
int tempsx,g=0,tempsy,forex,j=0,*totalel;
char *snake;
int *snakey, *snakex;
如果我明确分配值,它工作得很好,但我不能用这个来养我的蛇:
//int snakex[15]={26,27,28,29,30,31,32,33,34,35,36,37,38,39,40};
//int snakey[15]={13,13,13,13,13,13,13,13,13,13,13,13,13,13,13};
clrscr();
*totalel=0;
*numel=14;
forex=26;
snake= "***************";
这就是我所做的,我在功能打印机运行之前检查了值并且值很好。
for(;j<15;j++)
{
snakey[j]=13;
snakex[j]=forex;
*totalel=j;
forex++;
}
printer(numel,snakey,snake,transferx,transfery,snakex);
我希望你能在这方面帮助我。干杯。