c语言做一个游戏程序,C语言课程设计一个简单的游戏程序.doc

计算机技术基础课程设计

C语言

设计报告

题目:一个简单的游戏程序

学院:工商管理学院

专业:信息管理与信息系统

班级:050507

姓名:于金杰

指导教师:张守伟

设计日期:2006年12月16日

题目:一个简单的游戏程序

一、 选题背景:

1. 编写一个有趣的稍微复杂的,能够用到许多所学知识的程序。

2. 是一个以战斗为题材的小程序。

3. 主要涉及了图形绘制函数的运用、各种变量的运用、各种语句的使用、指针的运用、内存的管理等。

二、设计思路:

由两部分来完成界面,以战斗场面为主要部分;飞机和坦克的一个是文本部分,显示解释文字。另一个是各个图形的绘制,即飞机、坦克和炸弹三个实体,一个是战斗的过程,包括飞机起飞、投弹、爆炸,其中坦克在此间一直运动。

三:设计分析

(一).涉及问题

1.利用c类库中的有关存储图像的方法,先将图形绘制到一个内存缓冲区,然后使用时,直接拿指针进行调用,把它当作一个对象来使用。这样就构置了整个程序过程。

2.用复杂的绘制方法把一个飞机(或者坦克和炸弹)分拆成简单的基本图形(像直线、曲线、椭圆和矩形等),利用c类库中的画线(line)、画曲线(arc)、画椭圆(ellipse)和画矩形(rectangle)的方法。其中尤其在绘制飞机的尾翼的过程中使用了旋转矩阵,通过旋转一定角度把尾翼的旋转状态绘画出来。使它成为一个形象的图形。

3.要使飞机投下来的炸弹能够正好炸到坦克,并且在飞机起飞和炸弹降落过程中坦克一直运动,就要保证飞机、坦克、炸弹的时间同步。思路是先定好飞机和坦克的初始位置(还要考虑飞机和坦克的大小),然后再定好飞机投弹位置,最后定好坦克爆炸的位置,将它们都当成点来看有利于使制作更为简单。利用这三个位置来考虑动态过程,定好每步移动的时间和距离,精确计算最终炸弹和坦克能够相撞。对于消除图形移动时的引线的解决方法是利用绘制空白页的方法,即每绘制完飞机和坦克的时候,再绘制一部分空白,就可以使这个问题得到很好的解决。

(二).主要应用技术

1. 图形的绘画方法以及库函数的支持(关键通过旋转矩阵来实现飞机尾翼的画法)。

2. 通过数学计算来实现飞机、坦克和炸弹的动态特征,并通过逻辑循环来实现。

四.程序流程图

坦克绘制

坦克绘制

飞机绘制

文字描述

炸弹绘制

炸弹爆炸

飞机起飞

坦克运动

飞机投弹

坦克运动

图形绘制

战斗部分

五.程序清单

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

/*************库函数头文件调用**************/

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

#include

#include

#include

#include

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

/*****************变量设置******************/

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

/*设置声音频率(数字为频率)*/

unsigned Freq[110]={659,784,784,659,784,784,659,784,880,880,659,587,587,

523,587,587,523,587,587,523,587,659,784,784,587,659,587,659,784,784,659,784,

784,659,784,880,880,659,587,587,523,587,587,523,587,587,523,587,523,440,523,

523,523,393,440,494,523,587,523,494,440,392,494,587,494,393,659,784,392,440,

494,523,587,523,494,440,392,659,784,784,659,784,784,659,784,880,880,659,587,

587,523,587,587,523,587,587,523,587,659,784,784};

/*设置图像延迟时间(数字多少毫秒)*/

float Delay[110]={150,150,150,150,150,150,150,150,150,150,150,150,150,150,

150,160,160,160,160,170,170,170,170,175,170,170,170,170,170,170,170,170,170,

160,160,170,170,140,140,140,170,140,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值