當前位置:吉日网官网 - 傳統節日 - 求運行在VC++6.0中的蛇代碼。

求運行在VC++6.0中的蛇代碼。

#包括

#包括

#包括

#包括

#包括

#包括

#定義寬度40

#defineHEIGH12

枚舉方向{//方向

左邊,

對,

向上

下面的

};

結構食品{//食品

Intx

Inty

};

{//畫蛇。

intx

inty

structNode * next

};

Structsnake {//snake屬性du

intlenth//長度

enumdirectiondir//方向

};

structFood *食品;//食物

structSnake * snake//蛇屬性

structNode*snode,* tail//蛇身

intSPEECH = 200

int score = 0;//分數

ints mark = 0;//吃食物標誌誌記

int times = 0;

int stop = 0;

voidInitfood();//生產食物

voidInitsnake();//構造蛇

void eatfood();//向前看

voidAddnode(intx,inty);//增加蛇身

void display(struct node * shead);//顯示蛇坐在刀痕上。

void move();//蛇形運動

void draw();//畫壹條蛇

void home page();//主頁

voidkeybordhit();//監視器鍵盤按鍵

void addtail();//吃食物

Voidgotoxy(intx,inty)//定位光標。

{

COORDpos

位置。x = x-1;

位置。y = y-1;

SetConsoleCursorPosition(GetStdHandle(STD _ OUTPUT _ HANDLE),pos);

}

void ini snake()//構造蛇

{

inti

snake =(struct snake *)malloc(sizeof(struct snake));

tail =(struct node *)malloc(sizeof(struct node));

food =(struct food *)malloc(sizeof(struct food));

蛇-& gt;lenth = 5;//初始長度5

蛇-& gt;dir = RIGHT//初始的蛇頭方向是對的

for(I = 2;我& lt= snake-& gt;lenth+2;I++)//添加5個節點

{

Addnode(i,2);

}

}

voidinitfood()//生產食物

{

structNode * p = snode

int mark = 1;

srand((無符號)時間(空));//以時間為種子生成隨機數。

while(1)

{

食物-& gt;x = rand()%(WIDTH-2)+2;//食物x坐標

食物-& gt;y = rand()%(HEIGH-2)+2;//食物y坐標

而(p!=空)

{

如果((食物-& gt;x = = p-& gt;x)和amp& amp(食物-& gt;y = = p-& gt;Y))//如果食物產生在蛇身上。

{//食物再生。

mark = 0;//無效的食物生成

打破;

}

p = p-& gt;接下來;

}

If(mark = = 1)//如果食物不在蛇身上,生成食物;否則,再生食物。

{

gotoxy(食品-& gt;十、食物-& gt;y);

printf("%c ",3);

打破;

}

mark = 1;

p = snode

}

}

Voidmove ()//move

{

structNode*q,* p = snode

if(snake-& gt;dir = =右)

{

add node(p-& gt;x+1,p->y);

如果(smark==0)

{

while(p->;下壹個!=空)

{

q = p;

p = p-& gt;接下來;

}

q->;next = NULL

免費(p);

}

}

if(snake-& gt;方向= =左)

{

add node(p-& gt;x-1,p->y);

如果(smark==0)

{

while(p->;下壹個!=空)

{

q = p;

p = p-& gt;接下來;

}

q->;next = NULL

免費(p);

}

}

if(snake-& gt;dir==UP)

{

add node(p-& gt;x,p-& gt;y-1);

如果(smark==0)

{

while(p->;下壹個!=空)

{

q = p;

p = p-& gt;接下來;

}

q->;next = NULL

免費(p);

}

}

if(snake-& gt;方向= =向下)

{

add node(p-& gt;x,p-& gt;y+1);

如果(smark==0)

{

while(p->;下壹個!=空)

{

q = p;

p = p-& gt;接下來;

}

q->;next = NULL

免費(p);

}

}

}

VoidAddnode(intx,inty)//添加蛇體。

{

struct node * new node =(struct node *)malloc(sizeof(struct node));

structNode * p = snode

新節點-& gt;next = snode

新節點-& gt;x = x

新節點-& gt;y = y

snode = newnode//節點被添加到蛇頭

if(x & lt;2 | | x & gt= WIDTH | | y & lt2 | | y & gt=HEIGH)//到達邊界

{

STOP = 1;

gotoxy(10,19);

Printf("撞墻,遊戲結束,按任意鍵退出!\ n ");//失敗

_ getch();

免費(snode);//釋放內存

免費(蛇);

退出(0);

}

而(p!= null)//擊中自身

{

如果(p->;下壹個!=空)

如果((p-& gt;x = = x)& amp;& amp(p->;y==y))

{

STOP = 1;

gotoxy(10,19);

Printf("打自己,遊戲結束,按任意鍵退出!\ n ");//失敗

_ getch();

免費(snode);//釋放內存

免費(蛇);

退出(0);

}

p = p-& gt;接下來;

}

}

void eatfood()//吃食物

{

addtail();

得分++;

}

voidaddtail()//添加蛇尾

{

struct node * new node =(struct node *)malloc(sizeof(struct node));

structNode * p = snode

尾巴-& gt;next = newnode

新節點-& gt;x = 50

新節點-& gt;y = 20

新節點-& gt;next = NULL//節點被添加到蛇頭

tail = newnode//新的蛇尾

}

void Draw()//繪制蛇

{

structNode * p = snode

inti,j;

而(p!=空)

{

gotoxy(p-& gt;x,p-& gt;y);

printf("%c ",2);

尾巴= p;

p = p-& gt;接下來;

}

if(s node-& gt;x = = food-& gt;x & amp& ampsnode-& gt;y = = food-& gt;Y)//蛇頭的坐標等於食物坐標。

{

smark = 1;

eat food();//添加節點

init food();//生產食物

}

如果(smark==0)

{

gotoxy(tail-& gt;x,tail-& gt;y);//食物清完之前沒吃尾節點。

printf("%c ",' ');//吃菜的話,不知道尾節點。

}

其他

{

次數= 1;

}

if((smark = = 1)& amp;& amp(times==1))

{

gotoxy(tail-& gt;x,tail-& gt;y);//食物清完之前沒吃尾節點。

printf("%c ",' ');//吃菜的話,不知道尾節點。

smark = 0;

}

gotoxy(5012);

Printf ("food: %d,%d ",food-& gt;十、食物-& gt;y);

gotoxy(50,5);

Printf("分數:% d ",分數);

gotoxy(50,7);

Printf("速度:% d ",語音);

gotoxy(15,14);

Printf("按o鍵加速");

gotoxy(15,15);

Printf("按P鍵減速");

gotoxy(15,16);

Printf("按空格鍵暫停");

}

voidhidecursor()//隱藏光標

{

CONSOLE _ CURSOR _ info CURSOR _ info = { 1,0}。

SetConsoleCursorInfo(GetStdHandle(STD _ OUTPUT _ HANDLE),& ampcursor _ info);

}

void home page()//繪制主頁

{

intx,y;

hide cursor();//隱藏光標

printf("-\ n ");

printf(" | \ t \ t \ t \ t | \ n ");

printf(" | \ t \ t \ t \ t | \ n ");

printf(" | \ t \ t \ t \ t | \ n ");

printf(" | \ t \ t \ t \ t | \ n ");

printf(" | \ t \ t \ t \ t | \ n ");

printf(" | \ t \ t \ t \ t | \ n ");

printf(" | \ t \ t \ t \ t | \ n ");

printf(" | \ t \ t \ t \ t | \ n ");

printf(" | \ t \ t \ t \ t | \ n ");

printf(" | \ t \ t \ t \ t | \ n ");

printf("-\ n ");

gotoxy(5,13);

Printf("點擊任意鍵開始遊戲!根據W.A.S.D . ")控制方向;

_ getch();

init snake();

init food();

gotoxy(5,13);

printf(" ");

}

voidkeybordhit()//監視器鍵盤

{

charch

if(_kbhit())

{

ch = getch();

開關(通道)

{

案例“w”:

case ' w ':if(snake-& gt;Dir==DOWN)//如果原方向向下,反方向無效。

{

打破;

}

其他

蛇-& gt;dir = UP打破;

案例“a”:

case ' a ':if(snake-& gt;Dir==RIGHT)//如果原方向是對的,但反方向無效。

{

打破;

}

其他

蛇-& gt;dir = LEFT打破;

案例:

case ' s ':if(snake-& gt;Dir==UP)//如果原方向向上,則反方向無效。

{

打破;

}

其他

蛇-& gt;dir = DOWN打破;

案例“d”:

case ' d ':if(snake->;Dir==LEFT)//如果原方向為左,但反方向無效。

{

打破;

}

其他

蛇-& gt;dir = RIGHT打破;

案例“o”:

案例“o”:

if(SPEECH & gt;=150)//加速。

{

語音=語音-50;

}

打破;

案例“p”:

案例“p”:

if(語音& lt=400)//減速

{

演講=演講+50;

}

打破;

案例“”://暫停

gotoxy(15,18);

Printf("遊戲已經暫停,按任意鍵恢復遊戲");

系統("暫停& gtnul”);

gotoxy(15,18);

printf(" ");

打破;

默認:break

}

}

}

int main(void)//程序入口

{

主頁();

而(!停止)

{

keybordhit();//監視器鍵盤按鍵

move();//snake的坐標變化

draw();//蛇的重新繪制

睡眠(言語);//暫時掛起線程

}

return0

}

擴展數據:

註意事項:

1.代碼將源信息轉換成易於交流或存儲的符號。解碼(Decoding)是壹個還原解碼的過程,將代碼符號轉換成接收方能夠理解的形式。

2.編碼的原因之壹是在共同語言(口語或書面語)難以達到的情況下進行交流。例如,旗幟可以用特定的標記來表達特定的信息,而站在遠處的另壹個人可以解釋該標記來再現該信息。

  • 上一篇:民營企業的傳統商業模式有哪些?
  • 下一篇:誰有關於NCAA大學的所有信息?
  • copyright 2024吉日网官网