首页 > 其他分享 >c语言小游戏(c语言小游戏代码飞机大战)

c语言小游戏(c语言小游戏代码飞机大战)

时间:2022-10-24 19:01:05浏览次数:57  
标签:语言 int gtxy snk 大战 fod 小游戏 printf man


怎样用C语言编写一个小游戏?

“贪吃蛇”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

{ gtxy(0,i); printf("■");  //打印左边框

gtxy(W,i); printf("■");  //打印右边框

  while(1)

{ srand((unsigned)time(NULL));  //初始化随机数发生器srand( )

fod.x=rand()%(W-4)+2;  //随机函数rand( )产生一个从0到比”(W-4)”小1的数再加2

fod.y=rand()%(H-2)+1;  //随机函数rand( )产生一个从0到比”(H-2)”小1的数再加1

if (fod.x%2==0) break;  //fod.x是食物的横坐标,要是2的倍数(为偶数)

  setColor(12, 0);  //设定打印颜色为淡红字黑底

  gtxy(fod.x,fod.y); printf("●");  //到食物坐标处打印初试食物

  snk.len=3;//蛇身长

  snk.speed=350;  //刷新蛇的时间,即是移动速度

  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

{ snk.x[i]=snk.x[i-1]+2;  snk.y[i]=snk.y[i-1];

gtxy(snk.x[i],snk.y[i]);  printf("■");  //打印蛇身

}

 setColor(7, 0);  //恢复默认的白字黑底

 return;

void keymove( )  //按键操作移动蛇

{ int key;

  if( kbhit( ) )//如有按键输入才执行下面操作

{ key=getch( );

if (key==224)  //值为224表示按下了方向键,下面要再次获取键值

{ key=getch( );

if(key==72&&dir!=2)dir=1;  //72表示按下了向上方向键

if(key==80&&dir!=1)dir=2;  //80为向下

if(key==75&&dir!=4)dir=3;  //75为向左

if(key==77&&dir!=3)dir=4;  //77为向右

}

if (key==32)

{ while(1) if((key=getch( ))==32) break; }  //32为空格键,这儿用来暂停

}

  if (Flag==0)  //如没吃食物,才执行下面操作擦掉蛇尾

{ gtxy(snk.x[snk.len-1],snk.y[snk.len-1]);  printf("  "); }

  int i;

  for (i = snk.len - 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("\007"); 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;  //蛇头触碰上下边界

  for (i = 1; i < snk.len; i++)

{ if (snk.x[0] == snk.x[i] && snk.y[0] == snk.y[i]) return 1; }  //蛇头触碰自身

  return 0;//没碰到边界及自身时就返回0

void setColor(unsigned short ForeColor = 7, unsigned short BackGroundColor = 0)

{  HANDLE  handle = GetStdHandle(STD_OUTPUT_HANDLE);

  SetConsoleTextAttribute( handle, ForeColor + BackGroundColor * 0x10 );

}//用来设定颜色的函数#include

#include

#include

#include "windows.h"

void gotoxy(int x,int y) /*定义gotoxy函数*/

COORD c;

c.X=x-1;

c.Y=y-1;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);

int main()

struct point

int x, y;/*该点的位置,包括x坐标和y坐标*/

int xv, yv;/*该点在x轴,y轴的速度*/

}man;

long p;

man.x=man.y=20;

man.xv=man.yv=1;

system("cls");

p=1000000000000000;

while(p--)

if(p%50000)

continue;

gotoxy(man.x, man.y);/*把光标移到指定的坐标*/

printf(" ");/*输出一个空格,把先前的字符擦去*/

man.x += man.xv;/*水平方向按x轴的速度运动*/

man.y += man.yv;/*垂直方向按y轴的速度运动*/

if(man.x==0||man.x==80)

man.xv*=-1;

if(man.y==0||man.y==80)

man.yv*=-1;

gotoxy(man.x, man.y);

printf("%c\b", 2); /*输出ASCII码值为2的"笑脸"字符*/

getchar ();

return 0;

这个是一个会动的笑脸,你可以从最简单开始

c语言小游戏(c语言小游戏代码飞机大战)_开发语言

求各种C语言编程小游戏,越多越好,多了会有加分

C语言数字记忆小游戏,望采纳

#include

#include

#include

#include

#define TURE 1

#define FALSE 0

void main()

char another_name='Y';

char another_game='Y';

int correct='TRUE';

int counter=0;

int sequence_length=0;

int i=0;

long int seed=0;

int number=0;

long int now=0;

long time_taken=0;

int clock_per_sec;

printf("\n---------------------------------记忆小游戏--------------------------------------------\n");

printf("请牢记屏幕上出现的没一个数字,并在规定时间内输入您记下的数字。\n");

printf("回车开始游戏。\n");

scanf("%c",&another_game);

correct='TRUE';

counter=0;

sequence_length=2;

time_taken=clock();

while(correct)

sequence_length+=(counter++%3==0);

seed=time(NULL);

now=clock();

srand((int)seed);

for(i=0;i<=sequence_length;i++)

printf("%d",rand()%10);

for(;clock()-now

printf("\r");

for(i=0;i<=sequence_length;i++)

printf("");

if(counter==1)

printf("\n输入您记住的数字,以空格隔开。\n");

printf("\r");

srand((int)seed);

for(i=0;i<=sequence_length;i++)

scanf("%d",&number);

if(number!=rand()%10)

correct=FALSE;

break;

printf("%s\n",correct?"正确!":"错误!");

time_taken=(clock()-time_taken)/clock_per_sec;

printf("\n您的成绩是:%d",--counter*100/time_taken);

fflush(stdin);

printf("\n是否继续游戏?(Y/N)?\n");

scanf("%c",&another_game);

while(another_game=='y'||another_game=='Y');

}小子vsdgfwet我在linux下的gcc中未通过编译~

main.c:(.text+0x5f): undefined reference to `sqrt'

main.c:(.text+0xf6): undefined reference to `sqrt'

main.c:(.text+0x13b): undefined reference to `sqrt'

main.c:(.text+0x1d0): undefined reference to `sqrt'

main.c:(.text+0x2b1): undefined reference to `sqrt'

/tmp/ccrcnqbc.o:main.c:(.text+0x336): more undefined references to `sqrt' follow collect2: ld returned 1 exit status

好像没定义sqrt~

标签:语言,int,gtxy,snk,大战,fod,小游戏,printf,man
From: https://blog.51cto.com/yetaotao/5790950

相关文章

  • c语言strlen(c语言strlen计算空格吗)
    c语言里面的strlen是干什么的strlen()是计算字符串长度的函数,将返回从字符串首到'\0'之间总共的字符个数,原型为:externunsignedintstrlen(char*s);所以除非你的a[0]本身......
  • c语言学习资料
    在大二学习了c语言基础教程不请出以后应看先什么资料要是想考二级的话就看看c公共基础和南开一百题我保证只要这两个你看会了七成就能过二级要是想深入学习我就不了解了。......
  • c语言关键字(c语言关键字volatile)
    什么是C语言关键字关键字又称保留字,是c语言预定义的单词,在程序中有不同的使用目的,在定义标识符的时候,不能使用这些关键字,否则在编译时会产生莫名其妙的错误,C语言由ANSI定义......
  • c语言helloworld代码(c语言helloworld代码编写)
    C语言:求代码#includeintmain()inta,b,c,d,t,max,min;printf("Enterfourintegers:");scanf("%d%d%d%d",&a,&b,&c,&d);if(ad)min=d;printf("Largest:%d\nS......
  • 自然语言处理学习笔记-lecture09-篇章分析
    自然语言处理的处理单元分为字(编码、输入法),词、短语(形态分析、汉语分词、词性标注、词义消歧、命名实体识别等),句子(句法分析、语块分析、语义角色标注),篇章(机器翻译、......
  • go语言基础语法
    声明变量 varidentifiertypevar:声明变量关键字identifier:变量名称type:变量类型批量声明及初始化 var( name string="dcl" phonein......
  • c语言爱心代码(c语言画爱心的代码)
    html代码和c语言等编程语言有什么联系吗?HTML叫做超文本标记语言(标准通用标记语言下的一个应用)或超文本链接标示语言,是目前网络上应用最为广泛的语言,也是构成网页文档的主......
  • c语言数组(c语言数组求平均值)
    C语言数组有哪些特点呢?一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型C语言中一维数组中的数组大小可以省略吗?C语言中一维数组中的数组大小是......
  • c语言异或(c语言异或符号)
    请帮我讲解一下C语言中的异或运算首先,我们看一下异或的原理:a = 3 ^ 5;3的二进制是0011,5的二进制是0101。异或发现两者的不同之处,所以a最终为0110b(4)。了解了异或的基本......
  • c语言面试题(C语言面试题库,快速排序非递归)
    什么是C语言C語言是1972年左右由DennisRitchie一??人在?????室(?稱AT&T)設?開發出?淼碾?腦程式語言.他??r與KenThompson?扇斯餐??UNIX作?I系統的發展,而UNIX作?I系統(是......