贪吃蛇源代码;暑假集训
来源:互联网 发布:汇川plc编程软件安装 编辑:程序博客网 时间:2024/06/05 22:33
自己写的贪吃蛇,a s w d控制移动方向, [ ] 控制速度加减,有Bug的话欢迎指出
#include<stdio.h>#include<windows.h>#include<stdlib.h>#include<time.h>#include<conio.h>#define SNAKE_R21//行#define SNAKE_L20//列#define MOD 4structNode{ int x,y;}snake[SNAKE_R*SNAKE_L];charmap[SNAKE_R+10][SNAKE_L+10];intdir,cur_x,cur_y,lenth;intans[4][2]={0,-1,-1,0,0,1,1,0};intSPEED=50,score;voidgotoxy(int x,int y){ COORD c; c.X=x-1;c.Y=y-1; SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);}voidinit(){ int i,j; lenth=0; score=0; memset(map,0,sizeof(map)); snake[lenth].x=SNAKE_R/2; snake[lenth++].y=SNAKE_L/2; for(i=0;i<=SNAKE_R;i++) { for(j=0;j<=SNAKE_L;j++) { if(i==0&&j==0)printf("╔"); elseif(i==0 &&j==SNAKE_L)printf("╗"); elseif(i==SNAKE_R &&j==0)printf("╚"); elseif(i==SNAKE_R &&j== SNAKE_L)printf("╝"); elseif(i==0 || i==SNAKE_R)printf("=="); elseif(j==0 || j==SNAKE_L)printf("‖"); elseprintf(" "); } printf("\n"); } gotoxy(snake[0].y*2+1,snake[0].x+1); map[snake[0].x][snake[0].y]=1; printf("■"); gotoxy(cur_y*2+1,cur_x+1); printf("●"); gotoxy(SNAKE_L*2+14,SNAKE_R/2+1); printf("Score: %d",score);}intJudge(){ int x,y,t,i,j; x=snake[0].x+ans[dir][0]; y=snake[0].y+ans[dir][1]; if(x<=0 || y<=0 || x>=SNAKE_R || y>=SNAKE_L || map[x][y]) { if(map[x][y]) { for(t=1;t<=5;t++) { gotoxy(y*2+1,x+1); Sleep(400); if(t%2)printf("■"); else printf(" "); } } for(t=1;t<=5;t++) { Sleep(200); for(i=0;i<lenth;i++) { x=snake[i].x;y=snake[i].y; gotoxy(y*2+1,x+1); if(!(t%2))printf(" "); else printf("■"); } } for(t=1;t<=5;t++) { Sleep(200); for(i=1;i<SNAKE_R;i++) for(j=1;j<SNAKE_L;j++) { gotoxy(j*2+1,i+1); if(t%2)printf("■"); else printf(" "); } } gotoxy(SNAKE_L-3,SNAKE_R/2+1); printf(" GAME OVER! "); gotoxy(1,SNAKE_R+2); return -1; } if(x==cur_x &&y==cur_y) { score++; gotoxy(SNAKE_L*2+14,SNAKE_R/2+1); printf("Score: %d",score); snake[lenth].x=snake[lenth-1].x-ans[dir][0]; snake[lenth].y=snake[lenth-1].y-ans[dir][1]; lenth++; do{ srand(time(NULL)); cur_x=(rand()%(SNAKE_R-1)+1); cur_y=(rand()%(SNAKE_L-1)+1); }while(map[cur_x][cur_y]); gotoxy(cur_y*2+1,cur_x+1); printf("●"); return 1; } return 0;}voidMove(int state){ int i; if(!state) { gotoxy(snake[lenth-1].y*2+1,snake[lenth-1].x+1); map[snake[lenth-1].x][snake[lenth-1].y]=0; printf(" "); } gotoxy((snake[0].y+ans[dir][1])*2+1,snake[0].x+ans[dir][0]+1); printf("■"); map[snake[0].x+ans[dir][0]][snake[0].y+ans[dir][1]]=1; for(i=lenth-1;i>0;i--) { snake[i].x=snake[i-1].x; snake[i].y=snake[i-1].y; } snake[0].x+=ans[dir][0]; snake[0].y+=ans[dir][1];}intmain(){ char key; int finish=0,flag; srand(time(NULL)); do{ cur_x=(rand()%(SNAKE_R-1)+1); cur_y=(rand()%(SNAKE_L-1)+1); }while(cur_x==SNAKE_R/2 || cur_y==SNAKE_L); dir=rand()%MOD; init(); while(1) { while(!kbhit()) { Sleep(1); finish++; if(finish>=SPEED) finish=0; elsecontinue; flag=Judge(); if(flag==-1)return0; Move(flag); gotoxy(cur_y*2+1,cur_x+1); printf("●"); } key=getch(); if(key=='a' &&dir!=2)dir=0; else if(key=='w' &&dir!=3)dir=1; else if(key=='d' &&dir!=0)dir=2; else if(key=='s' &&dir!=1)dir=3; else if(key=='[' &&SPEED>10)SPEED-=10; else if(key==']')SPEED+=10; } return 0;}
- 贪吃蛇源代码;暑假集训
- 贪吃蛇 -- 暑假集训
- 贪吃蛇源代码
- 贪吃蛇源代码
- opengl贪吃蛇源代码
- python贪吃蛇源代码
- C++贪吃蛇源代码
- 贪吃蛇源代码分析
- MFC贪吃蛇+源代码
- java贪吃蛇源代码
- 贪吃蛇源代码
- C++贪吃蛇源代码
- C++贪吃蛇源代码
- java贪吃蛇源代码
- 贪吃蛇java源代码
- 贪吃蛇源代码
- 贪吃蛇java源代码
- 贪吃蛇js源代码
- 如何设置对话框的宽度和高度
- HDU 1166 敌兵布阵 线段树
- HDU 1754 I Hate It(线段树模版…
- HDU 3473 Minimum Sum(划分树)
- 俄罗斯方块 -- 暑假集训
- 贪吃蛇源代码;暑假集训
- 俄罗斯方块C语言修改版;暑假集训
- Windows;Socket;编程(转载)
- 线性判别分析(LDA) 主成分分析(PCA)
- \t\tC# AutoResetEvent WaitOne() Set()
- c# 调用wav 文件
- \t\tc# 调用wav 文件
- Linux下调用system()函数导致的问题
- C#播放背景音乐常用的四种方式(转载)