打兔子游戏打兔子游戏
计算机程序设计(C语言)
课程设计报告
题目:打兔子游戏
学院:
专业:
班级:
姓名:
指导教师:
设计日期:
一、选题背景:
这是一个小游戏的程序,非常简单,但是很有趣味,可以在上网累了的时候玩一玩,能缓解你大脑的疲劳,也可以在学习学累的时候,放松一下自己,锻炼一下自己的思维,让你变得更敏捷。手脑并用。因为C语言学的不是很好,所以上网借签了很多知识,费了很多周折这篇设计终于诞生了。这是一个打兔子的游戏,由于刚学习C语言,所以程序较简单`易懂。
二、设计思想:
本程序主要是由于平时的课程...
打兔子游戏
计算机程序设计(C语言)
课程设计
目:打兔子游戏
学院:
专业:
班级:
姓名:
指导教师:
设计日期:
一、选题背景:
这是一个小游戏的程序,非常简单,但是很有趣味,可以在上网累了的时候玩一玩,能缓解你大脑的疲劳,也可以在学习学累的时候,放松一下自己,锻炼一下自己的思维,让你变得更敏捷。手脑并用。因为C语言学的不是很好,所以上网借签了很多知识,费了很多周折这篇设计终于诞生了。这是一个打兔子的游戏,由于刚学习C语言,所以程序较简单`易懂。
二、设计思想:
本程序主要是由于平时的课程枯燥无味,所以做个小游戏来丰富我们的课余生活,开始用初始化图形系统设计图形,用调用函数的形式,通过鼠标操作射击9个格中的代表兔子的R形字母,在一定的时间里打多少兔子就会获得胜利。
三,主要解决问题的方法及技术关键
1、 主要问题及解决方法(个人创新)
地图的定义:通过定义一个二维字符数组,并设定数组范围,定义地图。在intx,y之后通过if()来确定打兔子在屏幕上的最大坐标。通过for循环定义地图范围。
2、 技术关键
绘制地图
变量范围的定义
兔子的出现及改变
四、程序流程图
开 始
main()主函数
调用图形库函数 include"graphics.h
() 调用
函数
math.h
调用标准I/O函数()
stdio.h
宏定义PI字符串()
define PI 3.141596
for循环
输出图形
结 束
五、程序清单
#include
#include
#include
#include
#include
#include
/*Global Variable*/
int rabbit[3][3]={
{0,0,0},
{0,0,0},
{0,0,0},
};
union REGS regs;
/*function's prototype*/ void initgr()
{
int gd=DETECT,gm=0;
/* registerbgidriver(EGAVGA_driver);*/
/*register BGI driver */
/*registerbgifont(gothic_font);*/
/*register BGI font*/
initgraph(&gd,&gm,"c:\\tc");
} /*initialize the graphic*/
void cursor(int x,int y) {
setcolor(WHITE);
line(x,y,x,y+18);
line(x+1,y,x+1,y+18);
line(x,y,x+12,y+12);
line(x+1,y,x+13,y+12);
line(x,y+18,x+4,y+14);
line(x,y+17,x+4,y+13);
line(x+4,y+14,x+6,y+20);
line(x+4,y+13,x+6,y+19);
line(x+6,y+20,x+10,y+18);
line(x+6,y+19,x+10,y+17);
line(x+10,y+18,x+8,y+12);
line(x+10,y+17,x+8,y+11);
line(x+8,y+12,x+12,y+12);
line(x+8,y+11,x+12,y+11);
} /*this is the mouse's cursor,maybe a little ugly*/
int init(int xmi,int xma,int ymi,int yma)
{
int retcode;
regs.x.ax=0;
int86(51,®s,®s);
/*with int86*/
retcode=regs.x.ax;
if(retcode==0)
return 0;
regs.x.ax=7;
regs.x.cx=xmi;
regs.x.dx=xma;
int86(51,®s,®s);
regs.x.ax=8;
regs.x.cx=ymi;
regs.x.dx=yma;
int86(51,®s,®s);
return retcode;
} /*initialize the mouse*/
int readmouse(int *mx,int *my,int *mbutt)
{
int xx0=*mx,yy0=*my,but0=0,mb=0;
int xnew, ynew;
do {
regs.x.ax=3;
int86(51,®s,®s);
xnew=regs.x.cx;
ynew=regs.x.dx;
*mbutt=regs.x.bx;
} while(xnew==xx0 && ynew==yy0 && *mbutt == but0 );
*mx=xnew;
*my=ynew;
mb=(*mbutt);
if(mb)
{
if(mb==1)
return 1;
else
return 0;
}
else
return 0;
} /*read the mouse action*/
void newxy(int *mx,int *my,int *mbutt) {
int ch,xx0=*mx,yy0=*my,x,y;
int xm,ym;
ch=readmouse(&xm,&ym,mbutt);
if(xm!=xx0||ym!=yy0)
{
switch (ch)
{
case 0:
cursor(xx0,yy0);
cursor(xm,ym);
break;
case 1:
cursor(xx0,yy0);
cursor(xm,ym);
break;
} /*paint the cursor when invoke the mouse's action*/
*mx=xm;
*my=ym;
} /*mouse event handling*/ }
int Random()
{
int aa;
int i,j;
struct time t;
gettime(&t);
i=t.ti_min+t.ti_hour+t.ti_sec+t.ti_hund;
/*generate the random integer with the help of time.h*/
for(j=0;j=1)
{
miss++;
setwritemode(COPY_PUT);
setcolor(YELLOW);
setfillstyle(SOLID_FILL,YELLOW);
bar(220+col*60+2,150+row*60+2,220+col*60+58,150+row*60+58);
setcolor(LIGHTGRAY);
setfillstyle(SOLID_FILL,LIGHTGRAY);
bar(590,250,650,280);
itoa(miss,str1,10);
setcolor(RED);
settextstyle(0,0,1);
outtextxy(590,250,str1);
cursor(x,y);
setwritemode(XOR_PUT);
cursor(x,y);
row=Random()%3;
col=Random()%3;
gettime(&t1);
}
newxy(&x,&y,&button);
if(button==1)
{
if((x-220)/60==col&&(y-150)/60==row)
{
score++;
setwritemode(COPY_PUT);
setcolor(LIGHTGRAY);
setfillstyle(SOLID_FILL,LIGHTGRAY);
bar(590,210,650,220);
itoa(score,str,10);
setcolor(RED);
settextstyle(0,0,1);
outtextxy(590,210,str);
setcolor(YELLOW);
setfillstyle(SOLID_FILL,YELLOW);
bar(220+col*60+2,150+row*60+2,220+col*60+58,150+row*60+58);
setwritemode(XOR_PUT);
cursor(x,y);
row=Random()%3;
col=Random()%3;
gettime(&t1);
} /*you hit it!*/
else
if(((x>570&&x<620)&&(y>365&&y<385))||((x>629&&x<639)&&(y>1&&y<11
)))
{
closegraph();
exit(0);
}
}
}
}
六、设计结果说明
1、 设计优点:运用了所学的知识较巧妙的从直观上达到了操作。而该程序效果简单,
容易理解,操作简便。
2、 设计不足:由于对知识的了解程度有限,有些功能的实现还不够简单。本程序仅能
应用于字符界面,感观效果不好。鉴于篇幅有限,程序难度不够。需要在以后的学
习中不断完善。
。
本文档为【打兔子游戏】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。