C语言设计一个炸弹超人游戏程序.docx

上传人:b****5 文档编号:3148785 上传时间:2022-11-18 格式:DOCX 页数:11 大小:18.53KB
下载 相关 举报
C语言设计一个炸弹超人游戏程序.docx_第1页
第1页 / 共11页
C语言设计一个炸弹超人游戏程序.docx_第2页
第2页 / 共11页
C语言设计一个炸弹超人游戏程序.docx_第3页
第3页 / 共11页
C语言设计一个炸弹超人游戏程序.docx_第4页
第4页 / 共11页
C语言设计一个炸弹超人游戏程序.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

C语言设计一个炸弹超人游戏程序.docx

《C语言设计一个炸弹超人游戏程序.docx》由会员分享,可在线阅读,更多相关《C语言设计一个炸弹超人游戏程序.docx(11页珍藏版)》请在冰豆网上搜索。

C语言设计一个炸弹超人游戏程序.docx

C语言设计一个炸弹超人游戏程序

计算机技术基础课程设计

          

 

C语言

 

 

设计报告

 

 

 

题目:

用C语言设计一个炸弹超人游戏程序

 

学院:

电气与电子工程学院

 

设计日期:

  

 

 

题目:

 用语言设计一个炸弹超人游戏程序

一、选题背景:

   游戏是人们娱乐休闲的方法,是启迪思维的手段。

表面上看起来制作游戏相当复杂,其实C语言功能很强大,它不仅可以解决许多实际问题,还可以编制一些游戏程序。

下面就是关于一个炸弹超人游戏的程序。

这个游戏是一类休闲游戏中的一种。

二、设计思想:

本游戏可供两人玩,游戏的背景是绿色的,游戏双方的超人:

甲方在矩形背景的右下角,乙方在矩形背景的左上角。

双方的目的是使自己的超人尽可能地多“吃”方块,也就是为自己的超人打通道路,使绿色变为蓝色,双方可以使用自己的炸弹,但仅可以使用三次。

甲方用W,S,A,D键控制方向,乙方用上下左右键控制自己的方向,甲,乙分别用空格键和回车键控制炸弹。

用ESC键退出游戏。

游戏程序开始用一个二维数组设计初始图形,再用到了结构体定义以及使用,通过多重调用函数和结构体,完成了矩阵和移动光标的目的,运用循环和判断语句了实现游戏的可运行性。

三、程序流程图:

若想退出请按Esc键。

流程图中按“上,下,左,右”键是一种并列关系,并无顺序。

现以甲方为例,乙方同理。

 

 

 

 

 

 

开始

按W键

按S键

按A键

按D键

 

 

 

 

 

 

否    是    否    是       否    是       否     是

按空格键

按空格键

按空格键

按空格键

上移一格

下移一格

左移一格

右移一格

判断格子是否变为蓝色

结束

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

四、程序清单:

 

#include "Conio.h" 

#include "graphics.h" 

#include  

#include  

#define closegr closegraph 

#define UP 0x4800 

#define DOWN 0x5000 

#define LEFT 0x4b00 

#define RIGHT 0x4d00 

#define SPACE 0x3920 

#define W 0x1177 

#define S 0x1f73 

#define A 0x1e61 

#define D 0x2064 

#define ENTER 0x1c0d 

#define ESC 0x011b

int a[13][19]={ 

{10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10}, 

{0,1,1,10,2,10,10,104,103,102,101,10,10,10,10,10,10,10,10}, 

{0,1,10,12,10,10,102,102,103,103,103,10,10,10,10,10,10,10,10}, 

{0,10,10,10,10,120,120,12,12,103,103,13,130,130,10,10,10,10,10}, 

{0,10,10,10,10,120,1204,102,102,103,103,130,130,130,10,10,10,10,10}, 

{0,10,10,10,10,120,1204,102,102,103,103,130,130,130,10,10,10,10,10}, 

{0,10,10,10,10,1204,1204,102,102,13,130,130,130,130,10,10,10,10,10}, 

{0,10,10,10,10,120,1204,120,102,103,130,130,130,130,10,10,10,10,10}, 

{0,10,10,10,10,120,1204,120,102,104,140,140,10,10,10,103,10,10,10}, 

{0,10,10,10,10,140,14,14,14,140,104,140,10,10,103,10,104,104,104}, 

{0,10,10,10,10,140,14,14,14,140,104,140,10,104,10,104,10,104,10}, 

{0,10,10,10,10,140,14,14,14,140,104,140,10,10,102,102,102,10,1}, 

{0,10,10,10,10,140,144,1440,1400,104,140,140,10,10,10,10,4,1,1}}; 

int a1=1,b1=1,mov1=1,high1=1,wide1=1,num1=1,lnum1=1,life1=100; 

int a2=18,b2=12,mov2=1,high2=1,wide2=1,num2=1,lnum2=1,life2=10; 

struct po{int x;int y;int lmax;int rmax;int umax;int dmax; 

int feel;long time;struct po *next;}; 

struct po po1,po2,po3,po4,po5,po6,po7,po8,po9,po10,po11,po12,po13,po14,po15,po16,*p1,*p2; 

f(x,y) 

{int z; 

if(a[y][x]<10)z=a[y][x];else z=a[y][x]/10; 

return z;} 

g(x,y) 

{int z; 

z=a[y][x]%10; 

return z; 

void initgr(void) /* BGI初始化 */ 

int gd = DETECT, gm = 0; /* 和gd = VGA,gm = VGAHI是同样效果 */ 

registerbgidriver(VGA);/* 注册BGI驱动后可以不需要.BGI文件的支持运行 */ 

initgraph(&gd, &gm, ""); 

draw0(x,y) 

{setfillstyle(1,14);bar(30*x+20,30*y+30,30*x+50,30*y+60);} 

draw1(x,y) 

{setcolor(BLUE);setfillstyle(1,GREEN);bar(30*x+20,30*y+30,30*x+50,30*y+60);} 

draw2(x,y) 

{setcolor(RED);line(30*x+35,30*y+30,30*x+35,30*y+60); 

line(30*x+20,30*y+45,30*x+35,30*y+30);line(30*x+35,30*y+30,30*x+50,30*y+45);} 

draw3(x,y) 

{setcolor(RED);line(30*x+20,30*y+45,30*x+50,30*y+45); 

line(30*x+35,30*y+30,30*x+50,30*y+45);line(30*x+50,30*y+45,30*x+35,30*y+60);} 

draw4(x,y) 

{setcolor(9);line(30*x+20,30*y+45,30*x+50,30*y+45); 

line(30*x,30*y+15,30*x+30,30*y+15);circle(30*x+35,30*y+45,15);} 

draw5(x,y) 

{setcolor(0);setfillstyle(1,0);pieslice(30*x+35,30*y+45,0,360,15);} 

draw6(x,y) 

{setcolor(RED);setfillstyle(1,13);bar(30*x+20,30*y+30,30*x+50,30*y+60);} 

draw7(x,y) 

{setcolor(RED);circle(30*x+35,30*y+40,10); 

line(30*x+35,30*y+50,30*x+35,30*y+60);line(30*x+35,30*y+50,30*x+40,30*y+60);}

 

draw8(x,y) 

{setcolor(YELLOW);circle(30*x+35,30*y+40,10); 

line(30*x+35,30*y+50,30*x+35,30*y+60);line(30*x+35,30*y+50,30*x+40,30*y+60);} 

draw(x,y,z) 

{switch(z){ 

case 0:

draw0(x,y);break; 

case 1:

draw1(x,y);break; 

case 2:

draw2(x,y);break; 

case 3:

draw3(x,y);break; 

case 4:

draw4(x,y);break; 

case 5:

draw5(x,y);break; 

case 6:

draw6(x,y);break; 

case 7:

draw7(x,y);break; 

case 8:

draw8(x,y);break; 

initpic() 

{int i,j; 

cleardevice(); 

setbkcolor(WHITE); 

for(j=1;j<=12;j+=1)for(i=1;i<=18;i+=1)draw(i,j,g(i,j)); 

draw(a1,b1,7); 

draw(a2,b2,8); 

/**************************/ 

eatpo1(){ 

if(num1<=7) 

{num1+=1;lnum1+=1;switch(num1){ 

case 2:

po1.next=&po2;po2.next=&po1;po2.feel=0;break; 

case 3:

po2.next=&po3;po3.next=&po1;po3.feel=0;break; 

case 4:

po3.next=&po4;po4.next=&po1;po4.feel=0;break; 

case 5:

po4.next=&po5;po5.next=&po1;po5.feel=0;break; 

case 6:

po5.next=&po6;po6.next=&po1;po6.feel=0;break; 

case 7:

po6.next=&po7;po7.next=&po1;po7.feel=0;break; 

case 8:

po7.next=&po8;po8.next=&po1;po8.feel=0;break;}}} 

eatpo2(){if(num2<=7) 

{num2+=1;lnum2+=1;switch(num2){ 

case 2:

po9.next=&po10;po10.next=&po9;po10.feel=0;break; 

case 3:

po10.next=&po11;po11.next=&po9;po11.feel=0;break; 

case 4:

po11.next=&po12;po12.next=&po9;po12.feel=0;break; 

case 5:

po12.n

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 思想汇报心得体会

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1