c语言程序设计报告

来源:互联网 发布:大数据 涂子沛 epub 编辑:程序博客网 时间:2024/05/01 22:53

程序设计报告——飞机游戏

导弹打飞机游戏是针对导弹模拟作战系统开发课题开发的一款小型游戏。飞机打导弹根据玩家的实力设置了不同的难易程度,玩家可以自行选择。简洁的键盘操作方式和多种辅助显示,使其极易上手。玩家可以通过键盘控制导弹发射器的移动,通过鼠标发射导弹击毁飞机。

“导弹打飞机”游戏软件系统分为三个功能:

1.  开始功能

2.  说明功能

3.  设置功能

                                          

程序分析:

1.先设置声明处理命令

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <time.h>

#define N 35

并建立各种函数,

void print(int [][N]);//输出函数

void movebul(int [][N]);//子弹移动函数

void movepla(int [][N]);//敌机移动函数

void setting(void);//设置函数

void menu(void);//菜单函数

2.用switch处理分支选择问题,接受玩家按键信息,处理并设置玩家位置。

3.该程序采用函数组成模块化结构,结合数组和循环结构来显示飞机的位置。

4.用printf来呈现游戏中飞机、玩家、得分情况和说明。

5.运用do…while的循环形式来让玩家设置游戏的界面,敌机密度以及敌机速度。

再运用switch分支语言来处理玩家所选择的结果。

6. getch()是等待按键输入,运用这个可以让玩家用键盘操控导弹位置。

 

改进游戏:

这个游戏是我对一个小游戏进行的改造升级版,添加了颜色函数、终止函数,选择类函数,使游戏实现了可以终止,不再是分数、死亡数一直增加但是没有结束的情况;增加了颜色函数,使得游戏看起来更加的舒适;增加了终止函数,使游戏在死亡三次后自动结束游戏,并且可以选择是否重新开始游戏;另外增添了设置函数,使得可以对游戏进行设置,改变游戏大小,调整飞机运行速度等等,是游戏更加的人性化

修改后的程序:

这个游戏是我对一个小游戏进行的改造升级版,

添加了颜色函数、

终止函数,

选择类函

数,使游戏实现了可以终止,不再是分数、死亡数一直增加但是没有结束的情况;

增加了颜

色函数,

使得游戏看起来更加的舒适;

增加了终止函数,

使游戏在死亡三次后自动结束游戏,

并且可以选择是否重新开始游戏;

另外增添了设置函数,

使得可以对游戏进行设置,

改变游

戏大小,调整飞机运行速度等等,是游戏更加的人性化

#include <stdio.h> 
#include <conio.h> 
#include <stdlib.h> 
#include <time.h> 
#define N 35 
#define up 72 
#define left 75 
#define right 77 
void run();//游戏控制函数
void yn();//设置是否继续游戏函数
void print(int [][N]);//输出函数 
void movebul(int [][N]);//子弹移动函数 
void movepla(int [][N]);//敌机移动函数
void setting(void);//设置函数
void menu(void);//菜单函数
int scr[22][N]={0},pl=9,width=24,speed=3,density=30,score=0,death=0;//全局变量:界面、我机初始位、界面宽度、敌机速度、敌机密度、得分、死亡 
void main(){
menu(); 
run(); 

void print(int a[][N])//输出函数

system("cls"); 
int i,j; 
for(i=0;i<22;i++)  
{
a[i][width-1]=4; 
for(j=0;j<width;j++) 

if(a[i][j]==0)printf(" "); 
if(a[i][j]==1)printf("\5");//输出我机的符号
if(a[i][j]==2)printf("^");//子弹
if(a[i][j]==3)printf("\3"); //输出敌机符号
if(a[i][j]==4)printf("\2"); 
if(i==1&&j==width-1)printf("您成功杀敌:%d 架",score);//右上角显示得分
if(i==2&&j==width-1) printf("设置:Esc");  
if(i==4&&j==width-1)printf("您已经死亡了:%d次",death);//右上角显示死亡次数
if(i==9&&j==width-1)printf("你还剩余%d条命!",3-death); 
if(i==18&&j==width-1) printf("制作人:XXX"); 
if(i==19&&j==width-1) 
 printf("班级:信息10-3班"); 
if(i==20&&j==width-1) 
 printf("学号:20100302xxxx"); 

printf("\n"); 
 


void movebul(int a[][N]) 
{
int i,j; 
for(i=0;i<22;i++) 
for(j=0;j<width;j++) 
{
if(i==0&&a[i][j]==2) 
 
a[i][j]=0; 


if(a[i][j]==2) 

if(a[i-1][j]==3)//加分

score+=1; 
printf("\7"); 

a[i][j]=0,a[i-1][j]=2; 


}  
void movepla(int a[][N]) 

int i,j; 
for(i=21;i>=0;i--)//从最后一行往上是为了避免把敌机直接冲出数组。
for(j=0;j<width;j++) 

if(i==21&&a[i][j]==3)  
a[i][j]=0;//消除敌机,在最低层
if(a[i][j]==3)a[i][j]=0,a[i+1][j]=3;//敌机移动
}  
if(a[20][pl]==3&&a[21][pl]==1)death++;//死亡 

void yn() 

system("cls"); 
system("color 2e"); 
printf("\n"); 
printf("\n"); 
printf("\t\t\t\t *****GAME OVER*****\n\a"); 
printf("\n"); 
printf("\n"); 
printf("\t\t *****游***戏***结***束*****     \n\n\n"); 
printf("\t\t\t按y键继续游戏,n键退出游戏(y/n)?\n"); 
printf("\t\t\t"); 
switch(getch())//提示是否要继续游戏

 
case 'y': case 'Y':death=0,score=0,run();

break; 
case 'n': case 'N':

break; 
default :exit(0);

break; 
 


void setting(void) 

int sw=0,i,j; 
system("cls"); 
do { 
sw=0; 
printf("\n 游戏界面的大小:1.大2.小>> "); 
switch(getche()) 

case '1':width=34;break; 
case '2':width=24;;break; 
default:printf("\n 错误,请重新选择...\n"); 
sw=1; 


0 0
原创粉丝点击