用c语言怎么写一个c语言小游戏代码?

1954人阅读
小游戏代码(1)
最近在看知乎是发现了一个这一个专栏
从中获取的许多知识,本文中的游戏也是从里面学到的,不过本人又自己加了一些功能。
这是一个类似于飞机大战的游戏,不过目前代码量比较小,所以看起来非常简陋游戏界面如下
更新日志,本人将原来的原来的代码有进一步的优化了一下,之前是只有一个非常小的战机现在更新后可以产生一个非常大的战机(看起来也更有气势了~~)和敌人的战机,不过死亡的判定条件和边境的判断条件还没有做好,等下次再继续加油。更新
就是这样一个简陋的游戏(实在惭愧,本人目前能力有限)
完整的代码如下:
#include&stdio.h&
#include&string.h&
#include&conio.h&
#include&windows.h&
#include&stdlib.h&
#define MAX 100
long long int speed = 0;
int position_x,position_y;
int bullet_x,bullet_y;
int enemy_x,enemy_y;
int map[MAX][MAX];
void starup()
high = 20;
width = 30;
position_x = high/2;
position_y = width/2;
bullet_x = 0;
bullet_y = position_y;
enemy_x = 2;
enemy_y = position_y-1;
score = 0;
void startMap()
for(i=1;i&=high-1;i++)
map[i][1] = 4;
for(j=2;j&=width-1;j++)
map[i][j] = 0;
map[i][width] = 4;
for(j=1;j&=j++)
map[i][j] = 3;
map[bullet_x][bullet_y] = 5;
map[position_x-1][position_y] = 1;
i = position_x;
for(j=position_y-2;j&=position_y+2;j++)
map[i][j] = 1;
map[position_x+1][position_y-1] = 1;
map[position_x+1][position_y+1] = 1;
map[enemy_x][enemy_y] = 2;
map[enemy_x-1][enemy_y-1] = 2;
map[enemy_x-1][enemy_y+1] = 2;
void HideCursor()
CONSOLE_CURSOR_INFO cursor_info = {1, 0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
void gotoxy(int x,int y)
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(handle,pos);
void updateWithoutInput()
if(bullet_x & 0)
bullet_x--;
if((bullet_x == enemy_x) && (bullet_y == enemy_y))
enemy_x = 0;
enemy_y = rand() %
bullet_x = 0;
if(enemy_x & high)
enemy_x = 0;
enemy_y = rand()%
if(speed == 1)
for(int i=1;i&=10000;i++)
for(int j=1;j&=1000;j++)
speed = 1;
speed = 0;
if(speed == 0)
enemy_x++;
speed = 1;
void updateWithInput()
if(kbhit())
input = getch();
if(input == 'a')
position_y--;
if(input == 's')
position_x++;
if(input == 'd')
position_y++;
if(input == 'w')
position_x--;
if(input == ' ')
bullet_x = position_x - 1;
bullet_y = position_y;
void show()
gotoxy(0,0);
for(i=1;i&=i++)
for(j=1;j&=j++)
if(map[i][j] == 0)
printf(" ");
if(map[i][j] == 1)
printf("*");
if(map[i][j] == 2)
printf("#");
if(map[i][j] == 3)
printf("~");
if(map[i][j] == 4)
printf("|");
if(map[i][j] == 5)
printf("|");
printf("\n");
printf("\n你的得分:%d\n\n",score);
printf("操作说明: ASDW分别操作 左下右上四个的移动\n");
printf("**空格是发出子弹**\n");
int main()
HideCursor();
startMap();
updateWithoutInput();
updateWithInput();
如果你看不明白,我建议你先去上面的那个连接中看看,他会教你如何一步步的进行最后做成一个完整的游戏。c语言编写的小游戏,53582小游戏大全 - www.3199.cn
相关搜索:
3199推荐:
相关游戏 18 个
显示方式:
3199小游戏为您搜索匹配了一些“c语言编写的小游戏”的小游戏,谢谢大家支持3199小游戏。
介绍:小海绵与小伙伴玩起了密室逃脱游戏,现在他被困在一间密室里,小伙伴们将所有的线索藏得非常隐蔽,想要逃出去还真不是一时半会可以完成的事,现在就让我们来帮助小海绵吧!类别:
有趣的益智闯关类小游戏,游戏中我们要帮助小怪都回到家里中则闯关成功。不过在回家的过程中别忘了让它们将沿途的美味水果也一起带回去哦,这样才能获得星星。现在就快到游戏中看看你能闯到第几关吧!
类别:&&&&操作方法:键盘方向键←→控制移动,↑/空格跳跃,R重置,M选择关卡。类别:&&失火了怎么办?不管你住旅馆还是家里,都要保持镇定,想办法逃生。这是一个水水工作室制作的安全教育-火场逃生解谜游戏。请你找出正确的路线逃出火场。操作方法:键盘方向键控制移动,空格键控制开关门/拾取道具/使用道具 方向键移动,空格键开关门/拾取道具/使用道具。类别:&&
妖精的尾巴又来了,这次是格斗版,华丽的画面,一起来控制灭龙魔导士来打败所有敌人吧!类别:&&&
不知道有多少天没吃东西了,小青蛙是非常的饥饿啊,看到远处的蝴蝶,你要帮助青蛙拼命的跳过去,吃掉蝴蝶。类别:&&&
这对可爱的小情侣去度假,他们看上去都和小孩子一样,傻傻的样子很有爱,一起来为他们打扮一下吧。类别:&&&
被流放的小流氓,一款非常有趣的射击挑战类游戏。游戏中,你是一名被流放异乡的流氓,要与当地的流氓势力进行决斗,你能否成功消灭当地的流氓势力?
类别:&爆龙战队的勇士正在与邪恶的怪兽斗争,我们来为他加油吧。操作方法:鼠标控制操作,拖动碎图片到右侧相应的位置上拼好。然后点游戏下方的Puzzle Complete即可。类别:&&
小汽车也来竞速了,这辆小汽车十分疯狂,遇到的一切都直接碾压过去,来和它一起吧。类别:&&&
绿猪们被愤怒的小鸟打怕了,不再敢明目张胆的去偷抢鸟蛋,万圣节的到来刚好给了他们一个机会,他们计划穿上万圣节装扮偷偷混入小鸟巢穴,悄悄的偷走鸟蛋,避免惹......&&类别:&&&&
冬天到了,小女孩和他的小伙伴小火焰出去玩耍,遇到了大冰雹,你能帮助小女孩保护她的小伙伴么?都来试试吧。类别:&&&&
汽车不仅仅是我们的出行工具,还是我们的朋友,需要我们仔细的照顾它。比如给它时不时的除除尘!
类别:&&&&正如这款游戏的名字一样——简单游戏,你只需要按照提示操作过关。看着简单,可操作起来却一点都不容易,大家来试试吧!操作方法:鼠标操作,把正方形的方块从长方形方块中拖出来,要保持平衡而不让长形的方块掉落地面,每关只能留下一个正方形的方块做支撑。类别:&&&&类别:&&&介绍:变色小怪回家记无敌版,无敌版中1键增加跳跃高度,2键减少跳跃高度,3键重置跳跃高度,4键解锁全部关卡。变色小怪不知道怎么滴进入水管里面,在水管里面的世界里,变色小怪那个担心啊,不知道爸爸妈妈怎么样了,会不会应为变色小怪的不见而报警!变色小怪用尽一起办法,各种招数都使了出来,最后……类别:&&&介绍:这对可爱的小情侣今天要一起登上大舞台去为大家表演,现在我们就去为他们好好的打扮一下吧!!类别:&
她可是时尚界最有名气的封面女郎哦,她拍的每一本杂志销量都十分的火爆。今天,她又来拍封面了,让我们一睹封面女郎的风采吧!
网站为您提供在线小游戏、双人小游戏、小游戏大全等深受广大网友喜爱的小游戏
作品版权归作者所有 &.cn合作:、、教你怎么使用C语言编写简单小游戏
//声明#include&stdio.h&#include&stdlib.h&#include&time.h&#include&conio.h&#include&windows.h&#define SIZE 4static int score=0;void putn(int n[][SIZE]);void getn(int n[][SIZE]);int isempty(int n[][SIZE]);int isfull(int n[][SIZE]);void math(int n[][SIZE],char c);void tow(int n[][SIZE]);void toa(int n[][SIZE]);void tos(int n[][SIZE]);void tod(int n[][SIZE]);//主函数int main(){
int n[SIZE][SIZE];
char c=' ';
for(i=0;i&SIZE;i++)
for(j=0;j&SIZE;j++)
n[i][j]=0;
printf( &***********************\n&
2048(%dX%d)
control:W/A/S/D
&press any key to begin \n&
&***********************\n&,SIZE,SIZE);
system(&cls&);
//n[0][1]=2048;
//n[0][3]=2048;
if(isempty(n))
if(!isempty(n)&&isfull(n))
sleep(200);
c=getch();
while(c!='w'&&c!='a'&&c!='s'&&c!='d')
c=getch();
math(n,c);
system(&cls&);
Game Over!\n&,score);
return 0;}//函数void putn(int n[][SIZE]){
for(i=0;i&SIZE;i++)
for(j=0;j&SIZE;j++)
printf(&|\n&);
for(j=0;j&SIZE;j++)
if(n[i][j]==0)
printf(&|%4d &,n[i][j]);
printf(&|\n&);
for(j=0;j&SIZE;j++)
printf(&|_____&);
printf(&|\n&);
printf(&score: %d&,score);}void getn(int n[][SIZE]){
a=rand()%SIZE;
b=rand()%SIZE;
while(n[a][b]!=0)
a=rand()%SIZE;
b=rand()%SIZE;
n[a][b]=2;}int isempty(int n[][SIZE]){
int i,j,count=0;
for(i=0;i&SIZE;i++)
for(j=0;j&SIZE;j++)
if(n[i][j]==0)
count++;}int isfull(int n[][SIZE]){
int i,j,count=0;
for(i=0;i&SIZE;i++)
for(j=1;j&SIZE-1;j++)
if(n[i][j]==n[i][j+1]||n[i][j]==n[i][j-1])
for(j=0;j&SIZE;j++)
for(i=1;i&SIZE-1;i++)
if(n[i][j]==n[i+1][j]||n[i][j]==n[i-1][j])
return count&0?0:1;}void math(int n[][SIZE],char c){
case 'w':tow(n);
case 'a':toa(n);
case 's':tos(n);
case 'd':tod(n);
default :;
}}void tow(int n[][SIZE]){
int i,j,a;
int m[SIZE];
for(a=0;a&SIZE;a++)
m[a]=0;for(j=0;j&SIZE;j++){
for(a=0;a&SIZE;a++)
for(i=0;i&SIZE-1;i++)
if(n[i][j]==0)
n[i][j]=n[i+1][j];
n[i+1][j]=0;
}}for(j=0;j&SIZE;j++){
for(a=0,i=0;i&SIZE;i++)
if(n[i][j]!=n[i+1][j]&&n[i][j]!=0||n[i][j]==2048)
m[a++]=n[i][j];
n[i][j]=0;
else if(n[i][j]==n[i+1][j])
m[a++]=n[i][j]+n[i+1][j];
score+=m[a-1];
n[i][j]=0,n[i+1][j]=0;
for(i=0;i&SIZE;i++)
n[i][j]=m[i];
}}}void toa(int n[][SIZE]){
int i,j,a;
int m[SIZE];
for(a=0;a&SIZE;a++)
m[a]=0;for(i=0;i&SIZE;i++){
for(a=0;a&SIZE;a++)
for(j=0;j&SIZE-1;j++)
if(n[i][j]==0)
n[i][j]=n[i][j+1];
n[i][j+1]=0;
}}for(i=0;i&SIZE;i++){
for(a=0,j=0;j&SIZE;j++)
if(n[i][j]!=n[i][j+1]&&n[i][j]!=0||n[i][j]==2048)
m[a++]=n[i][j];
n[i][j]=0;
else if(n[i][j]==n[i][j+1])
m[a++]=n[i][j]+n[i][j+1];
score+=m[a-1];
n[i][j]=0,n[i][j+1]=0;
for(j=0;j&SIZE;j++)
n[i][j]=m[j];
}}}void tos(int n[][SIZE]){
int i,j,a;
int m[SIZE];
for(a=0;a&SIZE;a++)
m[a]=0;for(j=SIZE-1;j&=0;j--){
for(a=SIZE-1;a&=0;a--)
for(i=SIZE-1;i&0;i--)
if(n[i][j]==0)
n[i][j]=n[i-1][j];
n[i-1][j]=0;
}}for(j=SIZE-1;j&=0;j--){
for(a=SIZE-1,i=SIZE-1;i&=0;i--)
if(n[i][j]!=n[i-1][j]&&n[i][j]!=0||n[i][j]==2048)
m[a--]=n[i][j];
n[i][j]=0;
else if(n[i][j]==n[i-1][j])
m[a--]=n[i][j]+n[i-1][j];
score+=m[a+1];
n[i][j]=0,n[i-1][j]=0;
for(i=SIZE-1;i&=0;i--)
n[i][j]=m[i];
}}}void tod(int n[][SIZE]){
int i,j,a;
int m[SIZE];
for(a=0;a&SIZE;a++)
m[a]=0;for(i=SIZE-1;i&=0;i--){
for(a=SIZE-1;a&=0;a--)
for(j=SIZE-1;j&0;j--)
if(n[i][j]==0)
n[i][j]=n[i][j-1];
n[i][j-1]=0;
}}for(i=SIZE-1;i&=0;i--){
for(a=SIZE-1,j=SIZE-1;j&=0;j--)
if(n[i][j]!=n[i][j-1]&&n[i][j]!=0||n[i][j]==2048)
m[a--]=n[i][j];
n[i][j]=0;
else if(n[i][j]==n[i][j-1])
m[a--]=n[i][j]+n[i][j-1];
score+=m[a+1];
n[i][j]=0,n[i][j-1]=0;
for(j=SIZE-1;j&=0;j--)
n[i][j]=m[j];
}}}需要注意的是:srand((unsigned) time(0);rand();是固定形式,不要更改任何一个字符!如果不能编译,请把sleep(200);注释掉,如果提示不能找到system(&cls&);请把system(&cls&)更换为clrscr();
c语言中没有类,只有结构,也可以像类一样编写,用结构,但其成员都是公开访问的,C++才有真正的类。
爱玩是人的天性,而C语言是我们计算机专业都要学习的一门基础 学科.一般来说,是比较枯燥的.那么,我们能不能通过编一些小游戏来提高它的趣味性呢?这样学习程序设计,就不会是一件艰苦 ,枯燥的事,它变得象电脑游戏一样充满好奇,富有乐趣. 1, 总是从Hello,world开始 学习编程的第一个程序,一般就是打印一个亲切的词语——&Hell o,world!&.让我们来看看这个最简单的C程序:#incolude
/*把输入输出函数的头文件包含进来*/int main(){printf(&Hello, world!&);/*在屏幕上输出字符串&Hello,world!&*/return 0;/*退出main函数,并返回0*/} 下面我们发现几个值得改进的地方,1,程序的运行结果一闪而过 .2,每执行这个程序一次都能看见上次运行留下的字符.3,我们 还希望屏幕输出一个笑脸来欢迎我们. 让我们来改进一下这个程序吧!1,在return语句的前面加一句:getch ();,表示按任意键结束.2,在printf语句前用clrscr函数清屏,要使用这个函数和getch函数,需要在程序开头再包含头文件conio.h.3,ASCII码也有 许多非常好玩的字符,比如ASCII码值为2的就是一个笑脸,我们可 以用printf(&%c&, 2)来输出一个笑脸. 现在我们把Hello,world程序改成一个更好看的Hello,world了.下面让我们开始做游戏吧! 2, 心动的开始,一个运动中的笑脸 大家小时侯喜欢看动画片吗?哈哈,我猜你们都喜欢吧!下面就让我们来做一个小动画吧.在屏幕上显示一个运动的小笑脸,而且当它到达屏幕的边缘时会自动弹回来.先在程序定义一个在屏幕中运动的点的结构:struct move_point{ int x,/*该点的位置,包括x坐标和y坐标*/ int xv,/*该点在x轴,y轴的速度*/};运动的原理是,先擦去物体先前的轨迹,让物体按其速度移动一段距离,再画出该物体.让我们看到以下代码:gotoxy(man.x, man.y);/*把光标移到指定的坐标*/printf(& &);/*输出一个空格,把先前的字符擦去*/然后我们让物体按其速度运动:man.x += man./*水平方向按x轴的速度运动*/man.y += man./*垂直方向按y轴的速度运动*/运动后还要判断物体是否出界,如果出了界,就令物体反弹,即让 它下一刻的速度等于现在的速度的相反数.最后打印出这个笑脸:gotoxy(man.x, man.y);printf(&%c\b&, 2); /*输出ASCII码值为2的&笑脸&字符*/怎么样?是不是很有趣呢?不过这个笑脸一直是自己运动,能不能 让我们来控制它运动呢?
不过这个程序没有什么目的,也没有什么判断胜负的条件.下面我们就利用这个能控制它移动的笑脸来做一个更有趣的游戏吧! 4, 在迷宫中探索 小时侯,我常在一些小人书和杂志上看见一些迷宫的游戏,非常喜欢玩,还常到一些书上找迷宫玩呢.好的,现在我们用C语言来编个迷宫的游戏,重温一下童年的乐趣. 首先,我们定义一个二维数组map,用它来保存迷宫的地图,其中map[x][y] == '#'表示在(x,y)坐标上的点是墙壁.DrawMap函数在屏幕上输出迷宫的地图和一些欢迎信息.在main函数里,我们定义了&小人&man的坐标和&目的地&des的 坐标.在游戏循环中,我们增加了一些用来判断胜负的语句:if (man.x == des.x && man.y == des.y) /*如果人的坐标等于目的地的坐标*/{ gotoxy(35, 3); printf(&Ok! You win!&); /*输出胜利信息*/….}在判断按键时,如果玩家按的是方向键,我们还要先判断前面是不是有&墙壁&,如果有的话,就不能往前移动了.好的,我们在判断按键的switch语句的各个分支加上了判断语句,如下:if (map[…][…] == '#')/*如果前面是墙壁,就不执行下去*/哇噻!真棒,我们做出了一个完整的游戏了.当然你还可以通过修改二维数组map来修改迷宫的地图,让它更有挑战性.不过,我们要设计一个更好玩的游戏—— 5, 聪明的搬运工 大家一定玩过&搬运工&的游戏吧!这是在电脑和电子字典上较流行的益智游戏,让我们动手做一个属于自己的&搬运工&吧!程序依然用数组map来保存地图,数组元素如果为空格则表示什么也没有,'b'表示箱子,'#'表示墙壁,'*'表示目的地,'i'表示箱子在目的地.我们以后每推一下箱子,不但要改变屏幕的显示,也要改变map相应元素的值.游戏的主循环依然是接受按键.当接收一个方向键,需要判断小人前面一格的状态,如果是空地或目的地,则人物可以直接移动;如果是墙壁,则不可移动;如果是箱子或目的地上的箱子,则需要继续判断箱子前面一格的状态:如果前一格是空地或目的地,则人推箱子前进,否则不可移动.好的,我们在switch中增加了这些判断语句.程序还有一个重要的功能就是判断胜利.数组Des用来记录全部目的地的坐标,我们每执行一步操作后,程序就要通过Des数组判断这些目的地上是否都有箱子了.真棒啊!我们可以做游戏了.而且是一个老少皆宜,趣味十足的游戏呢!当然,我们可以通过修改map数组来制作不同的游戏地图,我们还可以相互分享好的游戏地图呢. 尾声: 在C++等高级语言还没出来的时候,很多应用程序也是C语言开发的.C语言在与硬件联系紧密的编程中,也占有重要地位.其实我觉得学习编程,可以通过一些小游戏,实用的例子来学习.象学习音乐的人,不是要等到把全部乐理学完后才演奏一个完整的曲子.而是刚开始学时就有一些简单的曲子让你演奏,让你立刻就有成就感,让你很快就能卖弄出来在别人面前表现自己了.通过编游戏来学习编程,把学习变成游戏,不失为学习计算机的一种好方法. 好了,编游戏就这么简单,希望大家也尝试用C语言或其他的语言来做几个自己喜欢的小游戏.
c语言中没有类可能题目是C++的,根本就不是C语言的。
puts(“求赐教!”);
人的综合分
感谢您为社区的和谐贡献力量请选择举报类型
经过核实后将会做出处理感谢您为社区和谐做出贡献
确定要取消此次报名,退出该活动?&在此提供C语言小游戏源码,包括扫雷游戏,贪吃蛇游戏,时钟等。
运行时只要把红色部分改为自己电脑上TC目录的BGI分目录即可。
//扫雷游戏
#include &graphics.h&
#include &stdlib.h&
#include &dos.h&
#define LEFTPRESS 0xff01
#define LEFTCLICK 0xff10
#define LEFTDRAG 0xff19
#define MOUSEMOVE 0xff08
}Mine[10][10];
int gameAGAIN=0;
int gamePLAY=0;
int mineNUM;
char randmineNUM[3];
int MouseE
int MouseB
int MouseX;
int MouseY;
void Init(void);
void MouseOn(void);
void MouseOff(void);
void MouseSetXY(int,int);
int LeftPress(void);
int RightPress(void);
void MouseGetXY(void);
void Control(void);
void GameBegain(void);
void DrawSmile(void);
void DrawRedflag(int,int);
void DrawEmpty(int,int,int,int);
void GameOver(void);
void GameWin(void);
int MineStatistics(int,int);
int ShowWhite(int,int);
void GamePlay(void);
void Close(void);
void main(void)
Control();
void Init(void)
int gd=DETECT,
initgraph(&gd,&gm,"D://tc20//BGI");
void Close(void)
closegraph();
void MouseOn(void)
geninterrupt(0x33);
void MouseOff(void)
geninterrupt(0x33);
void MouseSetXY(int x,int y)
geninterrupt(0x33);
int LeftPress(void)
geninterrupt(0x33);
return(_BX&1);
int RightPress(void)
geninterrupt(0x33);
return(_BX&2);
void MouseGetXY(void)
geninterrupt(0x33);
MouseX=_CX;
MouseY=_DX;
void Control(void)
int gameFLAG=1;
if(gameFLAG)
GameBegain();
GamePlay();
if(gameAGAIN==1)
gameAGAIN=0;
MouseOn();
gameFLAG=0;
if(LeftPress())
MouseGetXY();
if(MouseX&280&&MouseX&300&&MouseY&65&&MouseY&85)
gameFLAG=1;
if(kbhit())
MouseOff();
void DrawSmile(void)
setfillstyle(SOLID_FILL,YELLOW);
fillellipse(290,75,10,10);
setcolor(YELLOW);
setfillstyle(SOLID_FILL,BLACK);
fillellipse(285,75,2,2);
fillellipse(295,75,2,2);
setcolor(BLACK);
bar(287,80,293,81);
void DrawRedflag(int i,int j)
setcolor(7);
setfillstyle(SOLID_FILL,RED);
bar(198+j*20,95+i*20,198+j*20+5,95+i*20+5);
setcolor(BLACK);
line(198+j*20,95+i*20,198+j*20,95+i*20+10);
void DrawEmpty(int i,int j,int mode,int color)
setcolor(color);
setfillstyle(SOLID_FILL,color);
if(mode==0)
bar(200+j*20-8,100+i*20-8,200+j*20+8,100+i*20+8);
if(mode==1)
bar(200+j*20-7,100+i*20-7,200+j*20+7,100+i*20+7);
void GameBegain(void)
cleardevice();
if(gamePLAY!=1)
MouseSetXY(290,70);
MouseX=290;
MouseY=70;
gamePLAY=1;
mineNUM=0;
setfillstyle(SOLID_FILL,7);
bar(190,60,390,290);
for(i=0;i&10;i++)
for(j=0;j&10;j++)
DrawEmpty(i,j,0,8);
setcolor(7);
DrawSmile();
randomize();//__page_break__
for(i=0;i&10;i++)
for(j=0;j&10;j++)
Mine[i][j].num=random(8);
if(Mine[i][j].num==1)
mineNUM++;
Mine[i][j].num=2;
Mine[i][j].flag=0;
sprintf(randmineNUM,"%d",mineNUM);
setcolor(1);
settextstyle(0,0,2);
outtextxy(210,70,randmineNUM);
mineNUM=100-mineNUM;
MouseOn();
void GameOver(void)
setcolor(0);
for(i=0;i&10;i++)
for(j=0;j&10;j++)
if(Mine[i][j].num==1)
DrawEmpty(i,j,0,RED);
setfillstyle(SOLID_FILL,BLACK);
fillellipse(200+j*20,100+i*20,7,7);
void GameWin(void)
setcolor(11);
settextstyle(0,0,2);
outtextxy(230,30,"YOU WIN!");
int MineStatistics(int i,int j)
int nNUM=0;
if(i==0&&j==0)
if(Mine[0][1].num==1)
if(Mine[1][0].num==1)
if(Mine[1][1].num==1)
if(i==0&&j==9)
if(Mine[0][8].num==1)
if(Mine[1][9].num==1)
if(Mine[1][8].num==1)
if(i==9&&j==0)
if(Mine[8][0].num==1)
if(Mine[9][1].num==1)
if(Mine[8][1].num==1)
if(i==9&&j==9)
if(Mine[9][8].num==1)
if(Mine[8][9].num==1)
if(Mine[8][8].num==1)
else if(j==0)
if(Mine[i][j+1].num==1)
if(Mine[i+1][j].num==1)
if(Mine[i-1][j].num==1)
if(Mine[i-1][j+1].num==1)
if(Mine[i+1][j+1].num==1)
else if(j==9)
if(Mine[i][j-1].num==1)
if(Mine[i+1][j].num==1)
if(Mine[i-1][j].num==1)
if(Mine[i-1][j-1].num==1)
if(Mine[i+1][j-1].num==1)
else if(i==0)
if(Mine[i+1][j].num==1)
if(Mine[i][j-1].num==1)
if(Mine[i][j+1].num==1)
if(Mine[i+1][j-1].num==1)
if(Mine[i+1][j+1].num==1)
else if(i==9)
if(Mine[i-1][j].num==1)
if(Mine[i][j-1].num==1)
if(Mine[i][j+1].num==1)
if(Mine[i-1][j-1].num==1)
if(Mine[i-1][j+1].num==1)
if(Mine[i-1][j].num==1)
if(Mine[i-1][j+1].num==1)
if(Mine[i][j+1].num==1)
if(Mine[i+1][j+1].num==1)
if(Mine[i+1][j].num==1)
if(Mine[i+1][j-1].num==1)
if(Mine[i][j-1].num==1)
if(Mine[i-1][j-1].num==1)
}//__page_break__
return (nNUM);
int ShowWhite(int i,int j)
if(Mine[i][j].flag==1||Mine[i][j].num==0)
mineNUM--;
if(Mine[i][j].roundnum==0&&Mine[i][j].num!=1)
DrawEmpty(i,j,1,7);
Mine[i][j].num=0;
if(Mine[i][j].roundnum!=0)
DrawEmpty(i,j,0,8);
sprintf(randmineNUM,"%d",Mine[i][j].roundnum);
setcolor(RED);
outtextxy(195+j*20,95+i*20,randmineNUM);
Mine[i][j].num=0;
if(i!=0&&Mine[i-1][j].num!=1)
ShowWhite(i-1,j);
if(i!=0&&j!=9&&Mine[i-1][j+1].num!=1)
ShowWhite(i-1,j+1);
if(j!=9&&Mine[i][j+1].num!=1)
ShowWhite(i,j+1);
if(j!=9&&i!=9&&Mine[i+1][j+1].num!=1)
ShowWhite(i+1,j+1);
if(i!=9&&Mine[i+1][j].num!=1)
ShowWhite(i+1,j);
if(i!=9&&j!=0&&Mine[i+1][j-1].num!=1)
ShowWhite(i+1,j-1);
if(j!=0&&Mine[i][j-1].num!=1)
ShowWhite(i,j-1);
if(i!=0&&j!=0&&Mine[i-1][j-1].num!=1)
ShowWhite(i-1,j-1);
void GamePlay(void)
for(i=0;i&10;i++)
for(j=0;j&10;j++)
Mine[i][j].roundnum=MineStatistics(i,j);
while(!kbhit())
if(LeftPress())
MouseGetXY();
if(MouseX&280&&MouseX&300&&MouseY&65&&MouseY&85)
MouseOff();
gameAGAIN=1;
if(MouseX&190&&MouseX&390&&MouseY&90&&MouseY&290)
j=(MouseX-190)/20;
i=(MouseY-90)/20;
if(Mine[i][j].flag==1)
if(Mine[i][j].num!=0)
if(Mine[i][j].num==1)
MouseOff();
GameOver();
MouseOff();
Num=MineStatistics(i,j);
if(Num==0)
ShowWhite(i,j);
sprintf(randmineNUM,"%d",Num);
setcolor(RED);
outtextxy(195+j*20,95+i*20,randmineNUM);
mineNUM--;
MouseOn();
Mine[i][j].num=0;
if(mineNUM&1)
GameWin();
if(RightPress())
MouseGetXY();
if(MouseX&190&&MouseX&390&&MouseY&90&&MouseY&290)
j=(MouseX-190)/20;
i=(MouseY-90)/20;
MouseOff();
if(Mine[i][j].flag==0&&Mine[i][j].num!=0)
DrawRedflag(i,j);
Mine[i][j].flag=1;
if(Mine[i][j].flag==1)
DrawEmpty(i,j,0,8);
Mine[i][j].flag=0;
MouseOn();
#include&graphics.h&
#include&math.h&
#include&dos.h&
#define pi 3.1415926
#define X(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300;
#define Y(a,b,c) y=a*sin(b*c*pi/180-pi/2)+240;
#define d(a,b,c) X(a,b,c);Y(a,b,c);line(300,240,x,y)
void init()
{int i,l,x1,x2,y1,y2;
setbkcolor(0);
circle(300,240,200);
circle(300,240,205);
circle(300,240,5);
for(i=0;i&60;i++)
{if(i%5==0) l=15;
x1=200*cos(i*6*pi/180)+300;
y1=200*sin(i*6*pi/180)+240;
x2=(200-l)*cos(i*6*pi/180)+300;
y2=(200-l)*sin(i*6*pi/180)+240;
line(x1,y1,x2,y2);
int gd=VGA,gm=2;
unsigned char h,m,s;
struct time t[1];
initgraph(&gd,&gm,"d://tc20//BGI");
setwritemode(1);
gettime(t);
h=t[0].ti_
m=t[0].ti_
s=t[0].ti_
setcolor(7);
d(150,h,30);
setcolor(14);
d(170,m,6);
setcolor(4);
d(190,s,6);
while(!kbhit())
{while(t[0].ti_sec==s)
gettime(t);
sound(400);
delay(70);
sound(200);
delay(30);
nosound();
setcolor(4);
d(190,s,6);
s=t[0].ti_
d(190,s,6);
if (t[0].ti_min!=m)
setcolor(14);
d(170,m,6);
m=t[0].ti_
d(170,m,6);
if (t[0].ti_hour!=h)
{ setcolor(7);
d(150,h,30);
h=t[0].ti_
d(150,h,30);
sound(1000);
delay(240);
nosound();
delay(140);
sound(2000);
delay(240);
nosound();
closegraph();
#define N 200
#include &graphics.h&
#include &stdlib.h&
#include &dos.h&
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define ESC 0x011b
int score=0;
int gamespeed=50000;
struct Food
struct Snake
void Init(void);
void Close(void);
void DrawK(void);
void GameOver(void);
void GamePlay(void);
void PrScore(void);
void main(void)
GamePlay();
void Init(void)
int gd=DETECT,
initgraph(&gd,&gm,"D://tc20//BGI");
cleardevice();
void DrawK(void)
setcolor(11);
setlinestyle(SOLID_LINE,0,THICK_WIDTH);
for(i=50;i&=600;i+=10)
rectangle(i,40,i+10,49);
rectangle(i,451,i+10,460);
for(i=40;i&=450;i+=10)
rectangle(50,i,59,i+10);
rectangle(601,i,610,i+10);
void GamePlay(void)
randomize();
food.yes=1;
snake.life=0;
snake.direction=1;
snake.x[0]=100;snake.y[0]=100;
snake.x[1]=110;snake.y[1]=100;
snake.node=2;
PrScore();
while(!kbhit())
if(food.yes==1)
food.x=rand()%400+60;
food.y=rand()%350+60;
while(food.x%10!=0)
while(food.y%10!=0)
food.yes=0;
if(food.yes==0)
setcolor(GREEN);
rectangle(food.x,food.y,food.x+10,food.y-10);
for(i=snake.node-1;i&0;i--)
snake.x[i]=snake.x[i-1];
snake.y[i]=snake.y[i-1];
switch(snake.direction)
case 1:snake.x[0]+=10;
case 2: snake.x[0]-=10;
case 3: snake.y[0]-=10;
case 4: snake.y[0]+=10;
for(i=3;i&snake.i++)
if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])
GameOver();
snake.life=1;
if(snake.x[0]&55||snake.x[0]&595||snake.y[0]&55||
snake.y[0]&455)
GameOver();
snake.life=1;
if(snake.life==1)
if(snake.x[0]==food.x&&snake.y[0]==food.y)
setcolor(0);
rectangle(food.x,food.y,food.x+10,food.y-10);
snake.x[snake.node]=-20;snake.y[snake.node]=-20;
snake.node++;
food.yes=1;
score+=10;
PrScore();
setcolor(4);
for(i=0;i&snake.i++)
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,
snake.y[i]-10);
delay(gamespeed);
setcolor(0);
rectangle(snake.x[snake.node-1],snake.y[snake.node-1],
snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);
if(snake.life==1)
key=bioskey(0);
if(key==ESC)
if(key==UP&&snake.direction!=4)
snake.direction=3;
if(key==RIGHT&&snake.direction!=2)
snake.direction=1;
if(key==LEFT&&snake.direction!=1)
snake.direction=2;
if(key==DOWN&&snake.direction!=3)
snake.direction=4;
void GameOver(void)
cleardevice();
PrScore();
setcolor(RED);
settextstyle(0,0,4);
outtextxy(200,200,"GAME OVER");
void PrScore(void)
char str[10];
setfillstyle(SOLID_FILL,YELLOW);
bar(50,15,220,35);
setcolor(6);
settextstyle(0,0,2);
sprintf(str,"score:%d",score);
outtextxy(55,20,str);
void Close(void)
closegraph();
//鼠标控制
#include &dos.h&
#include &bios.h&
#include &malloc.h&
#include &stdlib.h&
#include &stdio.h&
#include "graphics.h"
#define R 15
void initgr(void)
int gd = DETECT, gm = 0;
initgraph(&gd, &gm, "D://TC20//BGI");
void getmouse(int *x,int *y,int *key)
union REGS inregs,
inregs.x.ax=3;
int86(0x33,&inregs,&outregs);
*x=outregs.x.
*y=outregs.x.
*key=outregs.x.
void visbilemouse()
union REGS inregs,
inregs.x.ax=0x01;
int86(0x33,&inregs,&outregs);
void mouse(int *x,int *y,int *z)
int a=0,b=0,c=0,a_old=0,b_old=0;
ball=malloc(imagesize(a,b,a+R,b+R));
getimage(a,b,a+R,b+R,ball);
while(c==0)
getmouse(&a,&b,&c);
if(a&0) a=0;
if(b&0) b=0;
if(a&getmaxx()-R) a=getmaxx()-R;
if(b&getmaxy()-R) b=getmaxy()-R;
if(a!=a_old || b!=b_old)
putimage(a_old,b_old,ball,0);
getimage(a,b,a+R,b+R,ball);
setcolor(GREEN);
setlinestyle(0,0,1);
line(a,b,a+R,b+R/2);
line(a,b,a+R/2,b+R);
line(a+R,b+R/2,a+R/2,b+R);
line(a+R*3/4,b+R*3/4,a+R,b+R);
a_old=a;b_old=b;
*x=a;*y=b;*z=c;
putimage(a,b,ball,0);
free(ball);
void main()
int x,y,z;
visbilemouse();
setcolor(WHITE);
rectangle(175,8,220,25);
outtextxy(180,10,"exit");
mouse(&x,&y,&z);
setlinestyle(0,0,1);
setcolor(12);
circle(x,y,1);
{setfillstyle(1,BLACK);
bar(0,0,getmaxx(),getmaxy());
}while(x&175 || x&220 || y&8 || y&25);
closegraph();
阅读(...) 评论()}

我要回帖

更多关于 c语言小游戏 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信