“贪吃蛇”C代码:#include #include #include #include #include #define W 78 //游戏框的宽,x轴#define H 26 //游戏框的高,y轴 int dir=3; //方向变量,初值3表示向“左” int Flag=0; //吃了食物的标志(1是0否) int score=0; //玩家得分 struct food{ int x; //食物的x坐标 int y; //食物的y坐标 }fod; //结构体fod有2个成员 struct snake{ int len; //身长 int speed; //速度 int x[100]; int y[100]; }snk; //结构体snk有4个成员 void gtxy( int x,int y) //控制光标移动的函数 { COORD coord; coord.X=x; coord.Y=y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord); } void gtxy( int x,int y); //以下声明要用到的几个自编函数 void csh( ); //初始化界面 void keymove( ); //按键操作移动蛇 void putFod( ); //投放食物 int Over( ); //游戏结束(1是0否) void setColor(unsigned short p, unsigned short q); //设定显示颜色 int main( ) //主函数 { csh( ); while(1) { Sleep(snk.speed); keymove( ); putFod( ); if(Over( )) {system(“cls”); gtxy(W/2+1,H/2); printf(“游戏结束!T__T”); gtxy(W/2+1,H/2+2); printf(“玩家总分:%d分”,score); getch( ); break; } } return 0; } void csh( ) //初始化界面 { int i; gtxy(0,0); CONSOLE_CURSOR_INFO cursor_info={1,0}; //以下两行是隐藏光标的设置 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info); for(i=0;i<=W;i=i+2) //横坐标要为偶数,因为这个要打印的字符占2个位置 { setColor(2, 0); //设定打印颜色为绿字黑底 gtxy(i,0); printf("■"); //打印上边框 gtxy(i,H); printf("■"); //打印下边框 } for(i=1;i时间,即是移动速度 snk.x[0]=W/2+1; //蛇头横坐标要为偶数(因为W/2=39) snk.y[0]=H/2; //蛇头纵坐标 setColor(9, 0); //设定打印颜色为淡蓝字黑底 gtxy(snk.x[0], snk.y[0]); printf("■"); //打印蛇头 for(i=1;i 0; i--) //从蛇尾起每节存储前一节坐标值(蛇头除外) { snk.x[i]=snk.x[i-1]; snk.y[i]=snk.y[i-1]; } switch (dir) //判断蛇头该往哪个方向移动,并获取最新坐标值 { case 1: snk.y[0]--; break; //dir=1要向上移动 case 2: snk.y[0]++; break; //dir=2要向下移动 case 3: snk.x[0]-=2; break; //dir=3要向左移动 case 4: snk.x[0]+=2; break; //dir=4要向右移动 } setColor(9, 0); gtxy(snk.x[0], snk.y[0]); printf("■"); //打印蛇头 if (snk.x[0] == fod.x && snk.y[0] == fod.y) //如吃到食物则执行以下操作 { printf(" 07"); snk.len++; score += 100; snk.speed -= 5; Flag = 1; } //007是响铃 else Flag = 0; //没吃到食物Flag的值为0 if(snk.speed<150) snk.speed= snk.speed+5; //作弊码,不让速度无限加快 } void putFod( ) //投放食物 { if (Flag == 1) //如吃到食物才执行以下操作,生成另一个食物 { while (1) { int i,n= 1; srand((unsigned)time(NULL)); //初始化随机数发生器srand( ) fod.x = rand( ) % (W - 4) + 2; //产生在游戏框范围内的一个x坐标值 fod.y = rand( ) % (H - 2) + 1; //产生在游戏框范围内的一个y坐标值 for (i = 0; i < snk.len; i++) //随机生成的食物不能在蛇的身体上 { if (fod.x == snk.x[i] &&fod.y == snk.y[i]) { n= 0; break;} } if (n && fod.x % 2 == 0) break; //n不为0且横坐标为偶数,则食物坐标取值成功 } setColor(12, 0); gtxy(fod.x, fod.y); printf("●"); //光标到取得的坐标处打印食物 } return; } int Over( ) //判断游戏是否结束的函数 { int i; setColor(7, 0); gtxy(2,H+1); printf(“暂停键:space.”); //以下打印一些其它信息 gtxy(2,H+2); printf(“游戏得分:%d”,score); if (snk.x[0] == 0 || snk.x[0] == W) return 1; //蛇头触碰左右边界 if (snk.y[0] == 0 || snk.y[0] == H) return 1; //蛇头触。
2. 求C写的最简单的游戏
猜数字游戏,希望对你有帮助# include# include# includeint main(){ int a,b; char c; srand(time(NULL)); a=1+(rand()%1000); printf("I have a number between 1 and 1000.nCan you guess my number?nPlease type your first guess.n"); scanf("%d",&b); while(b!=-1) { if(b==a) { printf("Excellent! You guessed the number!nWould you like to play again(y or n)?"); scanf("%c",&c); scanf("%c",&c); switch(c){ case 'y': printf("I have a number between 1 and 1000.nCan you guess my number?nPlease type your first guess.n"); scanf("%d",&b); break; case 'n': goto END; break; } } while(ba) { printf("Too high.Try again."); scanf("%d",&b); } }END: return 0;}。
这个用控制台(就是和DOS似的,只有press any key to continue之类文字的界面)也可以实现,但是相关资料较少很难找,选择图形编程(windows下常用的软件都是这样,有窗口的)资料更多一些,如果你是在windows上编,就查C语言windows api,刚开始编时不会很方便。由易到难地尝试吧,不必急于用图形编程,控制台也是可以编出好游戏的,这是基础。