计算机程序设计(C语言)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2
键程序将处于无限循环状态,若按任意键程序将向下执行。同时 kbhit()实现球运动的控制。 利用 cleardevice()实现清除图形功能。 爆裂艺术效果的实现:利用 setcolour(),putpixel()(在指定位置画 一点)delay()(暂停)以及 for 循环实现爆裂效果。 2.技术关键: delay()的暂停功能。 cleardevice()的擦出整个图形屏幕。 closegraph()的关闭图形功能。
游 戏 结 束 界 面 : 若 任 务 未 完 成 结 束 游 戏 则 出 现 ‘ YOU AR E SI L L Y !’, 图 形 自 动 跳 转 到 ‘ GA M E OV E R ’ 图 形 , 然 后 自 动 关 闭 。若 任 务 完 成 游 戏 结 束 或 强 制 结 束 ,则 出 现‘ GA M E OVER’ 图 形 , 然 后 自 动 关 闭 。
int barM=300,barN=400,m,n;
randomize();
ballM=rand()%620+10;
ballN=rand()%200+190;
for(;;)
/*受侦察的指点....*/
{
7
/*小球的运动*/ while(!kbhit()) {
if((ballM<=10)||(ballM>=630)) dM=dM*(-1);
case 0: setcolor(RED); settextstyle(0,0,4); outtextxy(180,220,"Game Over!!!"); sleep(2); break;
}
}
/*爆裂效果*/ void bomb(int m,int n) {
int r1,i; int pointM,pointN,point_color;
6
来自百度文库
setcolor(YELLOW);
for(r1=1;r1<=4;r1++)
{
circle(m+1,n+1,r1);
delay(1000000);
}
delay(3000000);
setcolor(RED);
for(r1=1;r1>=6;r1++)
{
circle(m+1,n+1,r1);
delay(1000000);
settextstyle(0,0,6); for(i=1;i<=15;i++) {
setcolor(i); outtextxy(150,180,"hello!!!"); delay(1000000); } } cleardevice(); setbkcolor(WHITE); setfillstyle(SOLID_FILL,RED); bar(300,400,348,404); /*画屏幕上端的方块*/ randomize(); for(n=0;n<=150;n=n+15) for(m=0;m<=640;m=m+32) { color=((rand()%5)+2); setfillstyle(1,color);
{ dN=dN*(-1); setfillstyle(1,BLUE); bar(boxM,boxN,boxM+32,boxN+15); bomb(boxM,boxN); a[i][j].key=1; break;
} } /*判断反弹或出界*/ if((ballM>=barM)&&(ballM<=barM+60)&&(ballN>=390))
void main() {
int i,j,m,n; for(i=0,n=0;i<10;i++) {
m=0; for(j=0;j<20;j++) {
a[i][j].m=m; a[i][j].n=n; a[i][j].key=0; m=m+32; } n=n+15; } initgr();
9
picture(); move(); end(); closegr(); }
/*存放方块的信息*/ struct box
4
{ int m; int n; int key;
被击中过*/ }a[10][20];
/*方块右上角横坐标*/ /*方块右上角纵坐标*/ /*方块是否被击中过,1 表示被击中过,0 表示没有
int k; 正常退出*/
/*用来判断游戏的结束方式,0:按 ESC 退出,1:
六、设计结果说明 1、设计优点:
能够手动控制游戏结束,实现人机互动,操作比较简单。 多种颜色配置,桌面美观。该程序可以进行多处改动,使画面更 加美观。程序简单,层次分明,容易理解。 能够控制小球的运动速度,调快调慢,操作自如。 2.设计不足: 小球的运动路线单一—直线制,不能进行曲线运动。
10
if((ballN<=10)||(ballN>=470)) dN=dN*(-1);
setcolor(YELLOW); circle(ballM+=dM,ballN-=dN,5); setfillstyle(SOLID_FILL,YELLOW); floodfill(ballM,ballN,YELLOW); delay(6666); setcolor(BLUE); circle(ballM,ballN,5); setfillstyle(SOLID_FILL,BLUE); floodfill(ballM,ballN,BLUE);
case 1: setcolor(RED); settextstyle(0,0,4); outtextxy(130,200,"YOU ARE FALUIRE !!!"); sleep(1); cleardevice(); settextstyle(0,0,7); outtextxy(80,220,"Again!!!"); sleep(2); break;
/*初始化图形*/ void initgr() {
int gd=DETECT,gm; initgraph(&gd,&gm,""); }
/*画出初始图*/ void picture() {
int m,n,i,color; setcolor(GREEN); outtextxy(0,0,"ANY KEY ..."); while(!kbhit()) {
四、程序流程图:
开始 存放方块信息 初始化图形
3
无按键 与否
真
假 小球运动
反弹 ( k=o)
出界与反 弹
出界 ( k=1)
是否击中方 块
真
方块是否击 过
假 爆裂效果
球拍左或 右运动
假 真
(←键)
(→键)
左运动
假 右运动
方块是否 全被击
真 游戏结束
关闭图形
五、程序清单:
#include"stdio.h" #include"graphics.h" #include"stdlib.h" #include"bios.h" #define LEFT 0x4b00 #define RIGHT 0x4d00 #define ESC 0x011b
putpixel(pointM,pointN,point_color);
delay(1000000);
}
setfillstyle(1,BLUE);
bar(m,n,m+32,n+15);
}
/*开始游戏*/
void move()
{
int key;
int i,j,boxM,boxN;
int ballM,ballN,dM=1,dN=1;
dN=dN*(-1); if(((ballM<barM)||(ballM>barM+60))&&(ballN>410)) {
sleep(1); k=1; return; } }
8
/*球拍的运动*/ key=bioskey(0); m=barM; n=barN; if(key==LEFT) {
barM-=66; setfillstyle(SOLID_FILL,BLUE); bar(m,n,m+60,n+4); setfillstyle(SOLID_FILL,RED); bar(barM,barN,barM+60,barN+4); } else if(key==RIGHT) { barM+=66; setfillstyle(SOLID_FILL,BLUE); bar(m,n,m+60,n+4); setfillstyle(SOLID_FILL,RED); bar(barM,barN,barM+60,barN+4); } else if(key==ESC) { k=0; break; } } }
计算机程序设计(C 语言) 课程设计报告
题目:用 C 语言实现弹球游戏
学 院: 专 业: 班 级: 姓 名: 指导教师: 设计日期:
一、选题背景: 我 们 日 常 生 活 中 的 小 游 戏 机 、手 机 上 ,经 常 会 有 贪 吃
蛇 、拼 图 游 戏 、俄 罗 斯 方 块 、推 箱 子 、弹 球 等 小 游 戏 ,这 些小游戏看起来复杂,其实根据我们所学的知识,利用 C 语言亦可编译程序来实现。下面就是通过 C 语言程序实
三、主要解决问题的方法及技术关键 1、主要问题及解决方法: 用 “ graphics.h” 库 存 函 数 实 现 图 形 的 初 试 化 绘 制 。 并 利 用 setcolour()( 显示当前要画线颜色)和循环语句实现图形的颜色随时 间周期变换。 利用 kbhit()(检查当前按下键)实现游戏的开始与否的控制,若不按
/*判断是否击中方块*/ for(boxN=0,i=0;boxN<=150;boxN=boxN+15,i++) for(boxM=0,j=0;boxM<=640;boxM=boxM+32,j++) {
if((ballM<boxM+32)&&(ballM>boxM)&&((ballN<=(boxN+20))&&(ballN>=boxN-5)) &&(a[i][j].key==0))
}
delay(3000000);
setcolor(BLUE);
for(r1=6;r1>=1;r1--)
{
circle(m+1,n+1,r1);
delay(1000000);
}
for(i=1;i<=50;i++)
{
point_color=rand()%15;
pointM=(rand()%32+m);
pointN=(rand()%15+n);
1
现弹球游戏。 二、设计思想:
游 戏 正 式 开 始 前 设 计 初 始 图 形 , 正 中 ‘ BASKETBALL’ 设 为 较 大 图 形 , 颜 色 不 断 变 换 , 下 边 ‘ ANY KEY… … ’ 设 为绿色。玩者按任意键游戏开始。
游 戏 开 始 后 ,背 景 为 白 色 ,桌 面 上 端 为 一 排 彩 色 方 块 , 下 边 有 一 个 黄 色 小 球 和 红 色 球 拍 ,小 球 只 做 直 线 运 动 ,碰 到 反 弹 壁 反 弹 。小 球 碰 到 球 拍 反 弹 。玩 者 用 ← 和 → 控 制 球 拍 的 左 右 运 动 。桌 面 下 端 为 出 界 区 ,小 球 落 进 出 界 区 游 戏 结束。
5
bar(m,n,m+32,n+15); } sleep(1); }
/*关闭图形*/ void closegr() {
cleardevice(); closegraph(); }
/*游戏结束*/ void end() {
cleardevice(); setbkcolor(3); switch(k) {
键程序将处于无限循环状态,若按任意键程序将向下执行。同时 kbhit()实现球运动的控制。 利用 cleardevice()实现清除图形功能。 爆裂艺术效果的实现:利用 setcolour(),putpixel()(在指定位置画 一点)delay()(暂停)以及 for 循环实现爆裂效果。 2.技术关键: delay()的暂停功能。 cleardevice()的擦出整个图形屏幕。 closegraph()的关闭图形功能。
游 戏 结 束 界 面 : 若 任 务 未 完 成 结 束 游 戏 则 出 现 ‘ YOU AR E SI L L Y !’, 图 形 自 动 跳 转 到 ‘ GA M E OV E R ’ 图 形 , 然 后 自 动 关 闭 。若 任 务 完 成 游 戏 结 束 或 强 制 结 束 ,则 出 现‘ GA M E OVER’ 图 形 , 然 后 自 动 关 闭 。
int barM=300,barN=400,m,n;
randomize();
ballM=rand()%620+10;
ballN=rand()%200+190;
for(;;)
/*受侦察的指点....*/
{
7
/*小球的运动*/ while(!kbhit()) {
if((ballM<=10)||(ballM>=630)) dM=dM*(-1);
case 0: setcolor(RED); settextstyle(0,0,4); outtextxy(180,220,"Game Over!!!"); sleep(2); break;
}
}
/*爆裂效果*/ void bomb(int m,int n) {
int r1,i; int pointM,pointN,point_color;
6
来自百度文库
setcolor(YELLOW);
for(r1=1;r1<=4;r1++)
{
circle(m+1,n+1,r1);
delay(1000000);
}
delay(3000000);
setcolor(RED);
for(r1=1;r1>=6;r1++)
{
circle(m+1,n+1,r1);
delay(1000000);
settextstyle(0,0,6); for(i=1;i<=15;i++) {
setcolor(i); outtextxy(150,180,"hello!!!"); delay(1000000); } } cleardevice(); setbkcolor(WHITE); setfillstyle(SOLID_FILL,RED); bar(300,400,348,404); /*画屏幕上端的方块*/ randomize(); for(n=0;n<=150;n=n+15) for(m=0;m<=640;m=m+32) { color=((rand()%5)+2); setfillstyle(1,color);
{ dN=dN*(-1); setfillstyle(1,BLUE); bar(boxM,boxN,boxM+32,boxN+15); bomb(boxM,boxN); a[i][j].key=1; break;
} } /*判断反弹或出界*/ if((ballM>=barM)&&(ballM<=barM+60)&&(ballN>=390))
void main() {
int i,j,m,n; for(i=0,n=0;i<10;i++) {
m=0; for(j=0;j<20;j++) {
a[i][j].m=m; a[i][j].n=n; a[i][j].key=0; m=m+32; } n=n+15; } initgr();
9
picture(); move(); end(); closegr(); }
/*存放方块的信息*/ struct box
4
{ int m; int n; int key;
被击中过*/ }a[10][20];
/*方块右上角横坐标*/ /*方块右上角纵坐标*/ /*方块是否被击中过,1 表示被击中过,0 表示没有
int k; 正常退出*/
/*用来判断游戏的结束方式,0:按 ESC 退出,1:
六、设计结果说明 1、设计优点:
能够手动控制游戏结束,实现人机互动,操作比较简单。 多种颜色配置,桌面美观。该程序可以进行多处改动,使画面更 加美观。程序简单,层次分明,容易理解。 能够控制小球的运动速度,调快调慢,操作自如。 2.设计不足: 小球的运动路线单一—直线制,不能进行曲线运动。
10
if((ballN<=10)||(ballN>=470)) dN=dN*(-1);
setcolor(YELLOW); circle(ballM+=dM,ballN-=dN,5); setfillstyle(SOLID_FILL,YELLOW); floodfill(ballM,ballN,YELLOW); delay(6666); setcolor(BLUE); circle(ballM,ballN,5); setfillstyle(SOLID_FILL,BLUE); floodfill(ballM,ballN,BLUE);
case 1: setcolor(RED); settextstyle(0,0,4); outtextxy(130,200,"YOU ARE FALUIRE !!!"); sleep(1); cleardevice(); settextstyle(0,0,7); outtextxy(80,220,"Again!!!"); sleep(2); break;
/*初始化图形*/ void initgr() {
int gd=DETECT,gm; initgraph(&gd,&gm,""); }
/*画出初始图*/ void picture() {
int m,n,i,color; setcolor(GREEN); outtextxy(0,0,"ANY KEY ..."); while(!kbhit()) {
四、程序流程图:
开始 存放方块信息 初始化图形
3
无按键 与否
真
假 小球运动
反弹 ( k=o)
出界与反 弹
出界 ( k=1)
是否击中方 块
真
方块是否击 过
假 爆裂效果
球拍左或 右运动
假 真
(←键)
(→键)
左运动
假 右运动
方块是否 全被击
真 游戏结束
关闭图形
五、程序清单:
#include"stdio.h" #include"graphics.h" #include"stdlib.h" #include"bios.h" #define LEFT 0x4b00 #define RIGHT 0x4d00 #define ESC 0x011b
putpixel(pointM,pointN,point_color);
delay(1000000);
}
setfillstyle(1,BLUE);
bar(m,n,m+32,n+15);
}
/*开始游戏*/
void move()
{
int key;
int i,j,boxM,boxN;
int ballM,ballN,dM=1,dN=1;
dN=dN*(-1); if(((ballM<barM)||(ballM>barM+60))&&(ballN>410)) {
sleep(1); k=1; return; } }
8
/*球拍的运动*/ key=bioskey(0); m=barM; n=barN; if(key==LEFT) {
barM-=66; setfillstyle(SOLID_FILL,BLUE); bar(m,n,m+60,n+4); setfillstyle(SOLID_FILL,RED); bar(barM,barN,barM+60,barN+4); } else if(key==RIGHT) { barM+=66; setfillstyle(SOLID_FILL,BLUE); bar(m,n,m+60,n+4); setfillstyle(SOLID_FILL,RED); bar(barM,barN,barM+60,barN+4); } else if(key==ESC) { k=0; break; } } }
计算机程序设计(C 语言) 课程设计报告
题目:用 C 语言实现弹球游戏
学 院: 专 业: 班 级: 姓 名: 指导教师: 设计日期:
一、选题背景: 我 们 日 常 生 活 中 的 小 游 戏 机 、手 机 上 ,经 常 会 有 贪 吃
蛇 、拼 图 游 戏 、俄 罗 斯 方 块 、推 箱 子 、弹 球 等 小 游 戏 ,这 些小游戏看起来复杂,其实根据我们所学的知识,利用 C 语言亦可编译程序来实现。下面就是通过 C 语言程序实
三、主要解决问题的方法及技术关键 1、主要问题及解决方法: 用 “ graphics.h” 库 存 函 数 实 现 图 形 的 初 试 化 绘 制 。 并 利 用 setcolour()( 显示当前要画线颜色)和循环语句实现图形的颜色随时 间周期变换。 利用 kbhit()(检查当前按下键)实现游戏的开始与否的控制,若不按
/*判断是否击中方块*/ for(boxN=0,i=0;boxN<=150;boxN=boxN+15,i++) for(boxM=0,j=0;boxM<=640;boxM=boxM+32,j++) {
if((ballM<boxM+32)&&(ballM>boxM)&&((ballN<=(boxN+20))&&(ballN>=boxN-5)) &&(a[i][j].key==0))
}
delay(3000000);
setcolor(BLUE);
for(r1=6;r1>=1;r1--)
{
circle(m+1,n+1,r1);
delay(1000000);
}
for(i=1;i<=50;i++)
{
point_color=rand()%15;
pointM=(rand()%32+m);
pointN=(rand()%15+n);
1
现弹球游戏。 二、设计思想:
游 戏 正 式 开 始 前 设 计 初 始 图 形 , 正 中 ‘ BASKETBALL’ 设 为 较 大 图 形 , 颜 色 不 断 变 换 , 下 边 ‘ ANY KEY… … ’ 设 为绿色。玩者按任意键游戏开始。
游 戏 开 始 后 ,背 景 为 白 色 ,桌 面 上 端 为 一 排 彩 色 方 块 , 下 边 有 一 个 黄 色 小 球 和 红 色 球 拍 ,小 球 只 做 直 线 运 动 ,碰 到 反 弹 壁 反 弹 。小 球 碰 到 球 拍 反 弹 。玩 者 用 ← 和 → 控 制 球 拍 的 左 右 运 动 。桌 面 下 端 为 出 界 区 ,小 球 落 进 出 界 区 游 戏 结束。
5
bar(m,n,m+32,n+15); } sleep(1); }
/*关闭图形*/ void closegr() {
cleardevice(); closegraph(); }
/*游戏结束*/ void end() {
cleardevice(); setbkcolor(3); switch(k) {