私は C の初心者で、単純なスネーク ゲームを作成しようとしていたときに、別の関数で使用するとポインターの値が変化するという問題に遭遇しました。ヘビを育てるためにポインターを使用し、そのうちの 3 つを使用しました。確かに、これはスネーク ゲームの非常に初心者のアルゴリズムかもしれませんが、私はほとんどそこにいるように感じますが、何が悪かったのかわかりません。ヘビ自体、ヘビの各部分の x 座標、および y に 3 つのポイントを使用しました。コードの一部を投稿することもできます。
#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);
これについて私を助けてくれることを願っています。乾杯。