愤怒的小猪设计_第1页
愤怒的小猪设计_第2页
愤怒的小猪设计_第3页
愤怒的小猪设计_第4页
愤怒的小猪设计_第5页
已阅读5页,还剩116页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录

1引言.............................................................1

1.1背景..........................................................1

1.2参考资料......................................................1

2需求分析.........................................................1

2.1需求分析......................................................1

2.1.1软件需求.....................................错误!未定义书签。

2.1.2软件功能.....................................错误!未定义书签。

2.2运行环境.....................................................2

3系统设计.........................................................3

3.1功能需求描述..................................................3

3.2软件结构......................................................3

3.3程序模块划分..................................................5

4组员分工及时间安排..............................................10

4.1组员分工.....................................................12

4.2时间安排.....................................................13

5系统详细设计....................................................14

5.1主要数据结构说明.............................................14

5.2主要函数说明.................................................15

5.3主要算法说明.................................................21

6总结............................................................26

6.1组员A总结...................................................26

6.2组员B总结...................................................26

7源代码清单......................................................27

7.1XXX.C文件...................................................27

7.2XXX.H文件...................................................27

C语言程序设计报告

1引言

1.1背景

交通模拟导航系统是基于C语言开发的类似GPS汽车导航的系统。

愤怒的小鸟(AngryBirds)这款游戏的故事相当有趣,为了报复偷走鸟蛋的肥猪们,鸟儿以自

己的身体为武器,仿佛炮弹一样去攻击肥猪们的堡垒。游戏是十分卡通的2D画面,看着愤怒的红色

小鸟,奋不顾身的往绿色的肥猪的堡垒砸去,那种奇妙的感觉还真是令人感到很欢乐。而游戏的配

乐同样充满了欢乐的感觉,轻松的节奏,欢快的风格。不过在进行游戏的时候却没有这样的音乐,

有点可惜。但是将鸟儿们弹射出去时,鸟儿的叫声倒是给人很好笑的感觉。

因为愤怒的小鸟具有高度的可玩性,所以受到了大量玩家的热爱,但是因为它是一款商业软件,

正版需要付费才可以玩到,对于学生而言是一笔不小的费用,因此我们可以自己开发出一款与之相

似的非商业游戏来满足我们兴趣。

并且愤怒的小猪在编程过程中,可以很好的锻炼编程者的图形动画制作能力,可以有效的提高

编程者对DOS下图形编辑能力的了解,为日后制作其他图形软件打下较好的基础。

1.2参考资料

1.王士元C高级实用程序设计.北京:清华大学出版社.1996

2.周纯杰,刘正林等标准C语言程序及应用.武汉:华中科技大学出版社.2005

3.C语言高级编程技术.

4.浦滨C游戏编程从入门到精通

5.李军最新VESASVGA图形图像编程秘技

2需求分析

2.1需求分析

愤怒的小猪作为一款游戏,所以是一款以面向对象为主的程序,它必须要有良好的人机交互模式,丰

富的关卡,并且要对加入小猪不同的特殊效果,只有这样才可以保证高度的可玩性,并且为了体现游戏的

真实性与可玩性,小猪、小鸟、箱子都应大致符合物理定律,最后,如果时间充裕应尽量扩展游戏的功能,

以增加游戏的趣味性。

愤怒的小猪的四个主要关卡为:

1.第一关

◎本关中小猪为普通小猪,无特殊能力。

◎本关卡中共有6个箱子,2只小鸟。

◎小猪的数量为4只

I

C语言程序设计报告

2.第二关

◎本关中小猪为头盔小猪,特殊能力为:在飞行中,按下鼠标按键后,它的速度会加为两倍,使得

更快的接近目标。

◎本关卡中共有6个箱子,3只小鸟。

◎小猪的数量为4只。

3.第三关

◎本关中小猪为国王小猪,特殊能力为:在飞行中,按下鼠标按键后,它的运动方向将会改变,使

得以较好的角度击中目标。

◎本关卡中共有9个箱子,3只小鸟。

◎小猪的数量为4只。

4.第四关

◎本关中小猪为老猪,特殊能力为:在飞行中,按下鼠标按键后,或在它消失时,它将会发生爆炸,

炸毁一定范围的目标。

◎本关卡中共有9个箱子,3只小鸟。

◎小猪的数量为4只

另外,愤怒的小猪的两个小游戏为:

1.自设地图

◎通过编辑界面,编辑自定义地图。

◎通过自定义游戏按键,进入自定义关卡。

◎本模式中共有6个箱子,2只小鸟可以进行拖动编辑。

◎小猪的数量为4只

2.对战模式

◎本模式中两位玩家分别扮演红方与蓝方。

◎游戏的操作为轮流操作。

◎两位玩家分别拖动自己的小猪攻击对方小鸟,先消灭对方所有小鸟者获胜。

◎本关卡中每一方有9个箱子,3只小鸟。

另外,游戏中将实现排行榜功能,以激励玩家多多游戏,刷新纪录,增加游戏的挑战性。

2.2运行环境

愤怒的小猪是一款XP及win732位系统下的游戏,系统的开发基于C语言,其设计环境要求,是在

DOS环境下用C语言编程实现,使用TC或BC开发软件,因此,愤怒的小猪能够在绝大多数计算机系统

上运行,包括常见的windowsXP操作系统及windows732位机上运行,但是由于BC在64位的windows

7下无法运行,且BC或TC在windows7下不能较好地解决全屏问题,因而,推荐在windowsXP的环境

下测试运行此交通模拟导航系统。

本软件设计中加入了鼠标,因此操作过程必须依赖鼠标才能实现所有功能,具有良好的人机交互性。

本软件主要操作是通过鼠标选择我们给出的汉化界面选项。输出信息也将采用汉化的界面展示给玩家。

C语言程序设计报告

3系统设计

3.1功能需求描述

运行程序,先出现欢迎动画,按任意键可退出欢迎动画。

进入主界面,可以有开始游戏、排行榜、帮助、退出以及2个小游戏的按键,可以进入相应的界面。

在点击开始游戏后,将会进入关卡的选择界面,在选择界面中可以通过各关卡按键到达已解锁的游

戏关卡,通过重置按键重置关卡,并且在此页面可以查看相应关卡的最高分;

在点击排行榜后,将会进入排行榜界面,在排行榜界面中可以查看各关卡的分数排行情况;

在点击退出后,将会退出游戏;

在点击对战模式后,将会进入对战模式界面,开始对战模式游戏;

在点击自设关卡后,将会进入自设关卡界面,开始自设关卡游戏。

3.2软件结构(流程图)

C语言程序设计报告

C语言程序设计报告

3.3功能和操作简介

主菜单

有6个按钮,可通过按钮分别为开始游戏,查看帮助,查看排行榜,进入对战模式,进入自设地图,退出

游戏。

排行榜

在这个界面之中,可以点击Ievell;level2,level3jevel4可以查看相应关卡的分数记录与排行,重置按键可以

重置排行榜界面是分数清零,单击主菜单按键可以返回主菜单。

C语言程序设计报告

Highscore

关卡选择

在这个界面之中,己解锁的关卡可以点击进入游戏,未解锁的游戏点击后无效,可以点击关卡区域可以进

入相应的关卡,可以查看相应关卡的最高分数,重置按键可以重置关卡的解锁信息,单击返回按键可以返

回主菜单。

C语言程序设计报告

帮助界面

介绍游戏的基本操作

自设游戏界面

通过该界面选择界面的编辑与进入自定义游戏。

C语言程序设计报告

编辑界面

可以通过鼠标拖动小鸟与箱子确定其初始位置,编辑完成后点击左上角完成编辑。

自定义界面

根据编辑界面时确定的箱子与鸟的初始位置初始化游戏界面,其操作与正常游戏关卡相同,但是给关卡完

成之后,得到的分数将不会被记录。

C语言程序设计报告

游戏界面

游戏界面的左上角可以暂停游戏,左二按钮可以重新开始游戏,从右上角可以查看游戏中所得的分数,中

间的绿猪代表剩余的机会,在点击了暂停按钮之后,可以通过下拉菜单重新开始游戏,回到关卡选择,回

到主菜单。

对战界面

对战界面本模式中两位玩家分别扮演红方与蓝方,游戏的操作为轮流操作,两位玩家分别拖动自己

的小猪攻击对方小鸟,先消灭对方所有小鸟者获胜。

C语言程序设计报告

3.4程序模块划分

1.界面模块

a.游戏模块

b.菜单模块(包括主菜单、关卡选择菜单等)

c.动画模块

2.鼠标模块

a.鼠标图形函数

b.鼠标状态(位置,点击)判别函数

c.鼠标位置更新函数

d.鼠标显示隐藏函数

3.自定义关卡模块

a.地图编辑

b.自定义游戏画面

4.运动模块

a.拖动模块

b.碰撞检测模块

c.运动模块

5.文件模块

a.记录当前各关卡的分数

b.记录各关卡的解锁情况

6.汉化模块

a.汉字输出

7.英化模块

a.英文输出

b.数字输出

8.位图调用模块

a.显示位图

3.5程序中的名词定义和注释

1.对文件名(*.CPP)的解释

MAIN.CPP主函数

MAINMENU.CPP主菜单函数

LEVEL.CPP关卡选择

LEVEL1.CPP关1<-

LEVEL2.CPP关卡二

C语言程序设计报告

LEVEL3.CPP关卡三

LEVEL4.CPP关卡四

SELFSET.CPP自设游戏界面(调动编辑,进入游戏)

LEVELZDY.CPP自定义游戏游戏界面函数

VS.CPP对战模式函数

HELP.CPP帮助界面

HIGHSCORE.CPP排行榜界面

STARTDONGHUA.CPP开始动画函数

OUT_HZ.CPP汉化函数

MOUSE.CPP鼠标函数

WORD.CPP英文与数字输出函数

BIANJI.CPP编辑自设模式下的地图

VESA24B.CPPVESA模式下图形的调用

PAIHANGBANG.CPP排行榜功能函数

HIT.CPP碰撞检测函数

2.对其他文件的解释

TUPIAN调用图片文件夹

FILE存放各种文件的文件夹

HZK存放汉字库的文件

LEVEL1.TXT第一关的分数记录

LEVEL2.TXT第二关的分数记录

LEVEL3.TXT第三关的分数记录

C语言程序设计报告

LEVEL4.TXT第四关的分数记录

LOCK.TXT各关卡的解锁情况

ZDYBIRD.TXT自设模式下小鸟的坐标

ZDYBOX.TXT自设模式下箱子的坐标

4组员分工及时间安排

4.1组员分工

张昱:

1.菜单模块:

Help.cpp

Hit.cpp

Levell.cpp

Level2.cpp

Level3.cpp

Vs.cpp

严浩:

Main.cpp

MAINMENU.CPP

Highscore.cpp

Level.cpp

Level4.cpp

c语言程序设计报告

Bianji.cpp

Selfset.cpp

Levelzdy.cpp

Paihangbang.cpp

Word.cpp

Out_hz.cpp

VESA模式下图形的调用模块,鼠标的驱动模块非二人编写,不算入代码量

4.2时间安排

任务

第1周系统需求分析与设计报告

第2周界面设计,算法设计

第3周键盘、鼠标接口设计,算法设计

第4周编码实现

第5周编码实现

第6周编码实现

第7周编码实现、调试

第8周编码实现、调试

第9周调试、验收、提交报告

C语言程序设计报告

5系统详细设计

5.1主要数据结构说明

structdata

(

charname[15];

unsignedintgrade;

};〃排行榜中对象的姓名与分数

typedefstructtagPIG

(

charbmp[25];

intlife;

intx;

inty;

floatvx;

floatvy;

}PIG;〃小猪的参数

typedefstructtagBOX

(

intlife;

intx;

inty;

floatvx;

floatvy;

}BOX;〃箱子的参数

typedefstructtagBIRD

{

intlife;

intx;

inty;

floatvx;

floatvy;

}BIRD;〃小鸟的参数

C语言程序设计报告

5.2主要函数说明

Angrypig.h中主要函数:

/*功能*/

voiddrawbox(BOX*box,inti);

voiddrawbird(BIRD*bird,inti);

voiddrawpig(PIG*pigl);

voidhitcheckpig(BOX*box,PIG*pigl,BIRD*bird,inti,intj,unsignedint*score);

voidhitcheckbox(BIRD*bird,BOX*box,inti,intn,unsignedint*score);

voidcheckunder(BIRD*bird,BOX*box,inti,intn);

voidmovepig(PIG*pigl);

voidmovebox(BOX*box,inti);

voidmovebird(BIRD*bird,inti);

intstopcheckbox(BOX*box,inti);

intstopcheckbird(BIRD*bird,inti);

voidstopbox(BOX*box,inti);

voidstoppig(PIG*pigl);

voidstopbird(BIRD*bird,inti);

intispass(BIRD*bird,inti);

voidputin(intxmi,intymi,char*s);

voidboom(intxjnty);

voidboompig(intx,inty);

voidcheckboxbz(BOX*box,unsignedint*score);

voidcheckbirdbz(BIRD*bird,unsignedint*score);

C语言程序设计报告

voidlaunch(int*mx,int*my,int*mbutt,PIG*pigl);

/*界面*/

voidstartdonghua();

voidmainmenu();

voidhelp();

voidlevel();

voidlevell();

voidIevel2();

voidIevel3();

voidIevel4();

voidvs();

voidhighscore();

voidceshi();

/*鼠标*/

voidcursor(intx,inty);

intinit(intxmijntxmajntymi,intyma);

intread(int*mx,int*my,int*mbutt);

voidnewxy(int*mx,int*my,int*mbutt);

/*输出*/

voidout_hz(intxO,intyO,char*s,unsignedlong_color,intwidthjnttimes);

voidtextxy(intx,inty,char*str,unsignedlong_color,intn);

C语言程序设计报告

/*排行榜*/

voidfilestart();

voidlockstart();

intcompare(unsignedintscore,char*s);

voidpaixu(charname[15],unsignedintscore,char*s);

/*自设地图*/

voidselfset();

voidbianji();

voidlevelzdy();

/*bianji.cpp*/

voidyidongbird(int*mx,int*my,int*mbutt);

voidyidongbox(int*mx,int*my,int*mbutt);

voidbianjimouse(BOX*box,BIRD*bird);

/*鼠标*/

voidhelpmouse();

voidhsmouse();

voidlevelmouse(intaljnta2,inta3,inta4);

voidlevellmouse(BOX*box,PIG*pigl,BIRD*bird,unsignedint*score);

voidlevel2mouse(BOX*box,PIG*pigl,BIRD*bird,unsignedint*score);

voidlevel3mouse(BOX*box,PIG*pigl,BIRD*bird,unsignedint*score);

voidlevel4mouse(BOX*box,PIG*pigl,BIRD*bird,unsignedint*score);

voidlevelzdymouse(BOX*box,PIG*pigl,BIRD*bird,unsignedint*score);

voidmainmouse();

C语言程序设计报告

voidselfsetmouse();

voidvsmousel(BOX*boxl,PIG*pigl,BIRD*birdl,BOX*box2,PIG*pig2,BIRD

*bird2);

voidvsmouse2(BOX*boxl,PIG*pigl,BIRD*birdl,BOX*box2,PIG*pig2,BIRD

*bird2);

/*highscore.cpp*/

voidxianshiO();

voidxianshi(char*s);

/*levell.cpp*/

voidcheckscorel(unsignedintscore);

voidcheckscoreunl(unsignedintscore);

voidflyl(int*mx,int*my,int*buttons,BOX*box,PIG*pigl,BIRD*bird,unsignedint

*score);

voidunpassl(int*x,int*y,int*buttons);

voidpassl(int*x,int*y,int*buttons,unsignedint*score,jnti);

voidzantingl(int*x,int*y,int"buttons);

voidpassmousel(int*x,int*y,int*buttons);

/*level2.cpp*/

voidcheckscore2(unsignedintscore);

voidcheckscoreun2(unsignedintscore);

voidfly2(int*mx,int*my,int*buttons,BOX*box,PIG*pigl,BIRD*bird,unsignedint

*score);

voidunpass2(int*x,lnt*y,int*buttons);

C语言程序设计报告

voidpass2(int*x,int*y,int"buttons,unsignedint*score,inti);

voidzanting2(int*x,int*y,int"buttons);

voidpassmouse2(int*x,int*y,int*buttons);

/*level3.cpp*/

voidcheckscore3(unsignedintscore);

voidcheckscoreun3(unsignedintscore);

voidfly3(int*mx,int*myjnt*buttons,BOX*box,PIG*pigl,BIRD*bird,unsignedint

*score);

voidunpass3(int*x,int*y,int*buttons);

voidpass3(int*x,int*y,int*buttons,unsignedint*score,inti);

voidzanting3(int*x,int*y,int*buttons);

voidpassmouse3(int*x,int*y,int*buttons);

voidhuixuan(PIG*pigl);

/*level4.cpp*/

voidcheckscore4(unsignedintscore);

voidcheckscoreun4(unsignedintscore);

voidfly4(int*mx,int*my,int*buttons,BOX*box,PIG*pigl,BIRD*bird,unsignedint

*score);

voidunpass4(int*x,int*y,int*buttons);

voidpass4(int*x,int*y,int*buttons,unsignedint*score,inti);

voidzanting4(int*x,int*y,int・buttons);

voidpassmouse4(int*x,int*y,int*buttons);

voidbaozha(intx,inty);

C语言程序设计报告

voidbaozhacheck(PIG*pigl,BOX*box,BIRD*bird,inti,intj,unsignedint*score);

voidstoppig4(PIG*pigl,BOX*box,BIRD*bird,unsignedint*score);

voidhitcheckpig4(BOX*box,PIG*pigl,BIRD*bird,intijntj,unsignedint*score);

/*levelzdy*/

voidcheckscorezdy(unsignedintscore);

voidcheckscoreunzdy(unsignedintscore);

voidflyzdy(int*mx,int*myjnt*buttons,BOX*box,PIG*pigl,BIRD*bird,unsigned

int*score);

voidunpasszdy(int*x,int*y,int*buttons);

voidpasszdy(int*x,int*y,int*buttons,unsignedint*score,inti);

voidzantingzdy(int*x,int*y,int*buttons);

voidpassmousezdy(int*x,int*y,int*buttons);

/*vs.cpp*/

voidvsflyl(int*mx,int*my,int*buttons,BOX*box,PIG*pigl,BIRD*bird);

voidvsfly2(int*mx,int*my,int*buttons,BOX*box,PIG*pigl,BIRD*bird);

voidvszanting(int*x,int*y,int*buttons);

voidvshitcheckpig(BOX*box,PIG*pigl,BIRD*bird,inti,intj);

voidvshitcheckbox(BIRD*bird,BOX*box,inti,intn);

voidvscheckboxbz(BOX*box);

voidvscheckbirdbz(BIRD*bird);

voidvslaunchl(int*mx,int*my,int*mbutt,PIG*pigl);

voidvslaunch2(int*mx,int*my,int*mbutt,PIG*pigl);

voidvswinmouse();

c语言程序设计报告

intiswin(BIRD*bird,inti);

5.3主要算法说明

附:5.1主要数据结构说明

structdata

(

charname[15];〃破纪录者姓名

unsignedintgrade;〃破记录者分数

};〃排行榜中对象的姓名与分数

typedefstructtagPIG

(

charbmp[25];〃储存小猪图像的路径

intlife;〃小猪的生命

intx;〃小猪的x坐标

inty;〃小猪的y坐标

floatvx;//小猪的x向速度

floatvy;〃小猪的y向速度

}PIG;〃小猪的参数

typedefstructtagBOX

(

intlife;〃箱子的生命

intx;//箱子的x坐标

inty;//箱子的y坐标

floatvx;〃箱子的x向速度

floatvy;//箱子的y向速度

}BOX;〃箱子的参数

typedefstructtagBIRD

(

intlife;//小鸟的生命

intx;//小鸟的x坐标

inty;〃小鸟的y坐标

floatvx;//小鸟的x向速度

floatvy;//小鸟的y向速度

}BIRD;〃小鸟的参数

C语言程序设计报告

5.4主要算法说明

voidhitcheckpig(BOX*box,PIG*pigl,BIRD*bird,inti,int^unsignedint*score)〃小猪的碰撞检测

(

if(pigl->life>O)

(

for(;i>0;i-,box++)

(

if(box->life>0)

(

if(abs(box->x-pigl->x)<36&&abs(box->y-pigl->y)<36)

(

if(box->y-pigl->y>30)

(

if(fabs(pigl->vy)<40)

(

pigl->vy=pigl->vy*(-0.5);

box->life=box->life-30;

checkboxbz(box,score);

}

else

(

pigl->vx=pigl->vx*0.5;

pigl->vy=pigl->vy*0.5;

box->life=0;

checkboxbz(box,score);

)

}

else

(

if(fabs(pigl->vx)<35)

(

pigl->vx=pigl->vx*(-0.5);

box->life=box->life-50;

checkboxbzfbox^core);

)

elseif(fabs(pigl->vx)<90)

(

box->vx=pigl->vx*(0.5);

pigl->vx=pigl->vx*(-0.5);

box->life=box->life-60;

checkboxbz(box,score);

else

pigl->vx=pigl->vx*0.6;

C语言程序设计报告

pigl->vy=pigl->vy*1.5;

box->life=0;

checkboxbz(box,score);

}

}

break;

)

)

}

for(;j>0;j-,bird++)

(

if(bird->life>0)

(

if(abs(bird->x-pigl->x)<30&&abs(bird->y-pigl->y)<30)

(

pigl->vy=pigl->vy*(-0.7);

pigl->vx=pigl->vx*0.5;

bird->life=O;

checkbirdbz(birdzscore);

)

)

}

pigl->vy=pigl->vy-7*0.1;

stoppig(pigl);

)

}

voidhitcheckbox(BIRD*bird,BOX*box,inti,intn,unsignedint*score)//箱子的碰撞检我!]

(

intj=i,k=i,a;

BOX*start=box,*temp=box;

BIRD*birdtemp;

for(;i>0;i-,box++)

(

if(box->life>0)

(

for(birdtemp=bird,a=n;a>0;a-,birdtemp++)

(

if(birdtemp->life>0&&abs(box->x-birdtemp->x)<35&&(birdtemp->y-box->y<35)&&(birdtemp->y-box->y>2

0))

(

birdtemp->life=O;

checkbirdbzfbirdtemp,score);

)

)

C语言程序设计报告

if(box->life>0&&box->vx!=0)

(

for(birdtemp=bird/a=n;a>0;a-/birdtemp++)

(

if(abs(box->x-birdtemp->x)<33&&abs(box->y-birdtemp->y)<33&&birdtemp->life>0)

(

box->life=0;

checkboxbz(box,score);

birdtemp->life=O;

checkbirdbz(birdtempzscore);

break;

)

)

for(j=k/temp=start;j>0;j-/temp++)

(

if(temp->life>0)

(

if(abs(box->x-temp->x)<40&&abs(box->y-temp->y)<30&&((box->x-temp->x)!=0||(box->y-temp->y)!=0))

(

box->life=0;

checkboxbz(box,score);

break;

)

}

)

if(box->x<20||box->x>1004)

(

box->life=0;

checkboxbzfbox,score);

)

)

)

)

voidcheckunder(BIRD*bird,BOX*box,intijntn)〃底部障碍物检测

(

intj=i,k=i,m=i;

BOX*start=boxz*temp=box;

for(;i>0;i-,box++)

(

if(box->life>0)

for(j=k,temp=start;j>0;j-,temp++)

C语言程序设计报告

if(temp->life>0)

(

if(abs(temp->x-box->x)<=20&&(temp->y-box->y)<41&&(temp->y-box->y)>20)

(

box->vy=0;

break;

}

if(box->y>=565)

(

box->vx=0;

box->vy=0;

break;

}

)

)

if(j==O)

(

box->vy=box->vy+0.9;

)

}

)

for(;n>0;n-,bird++)

(

for(box=start,k=m;k>0;k-/box++)

(

if(box->life>0)

(

if(bird->life>0)

(

if(abs(bird->x-box->x)<20&&box->y-bird->y<38&&box->y-bird->y>32)

(

bird->vy=O;

break;

}

)

)

if(bird->y>569)

(

bird->vy=O;

break;

)

}

if(k==O)

bird->vy=bird->vy+0.7;

C语言程序设计报告

)

)

6总结

6.1组员张昱总结

1、要特别注意数据的类型,如我们在写游戏界面的鼠标时,鼠标的坐标是int型,但在一个判断语句中将

其进行运算后,有时运算结果的值超出了int的范围,这种问题编译时不会提示,游戏运行时也只是偶尔

出现,并且这方面问题很难引起注意,debug很困难,应特别注意。

2、当程序中出现多层for循环嵌套时,应特别注意里层循环的初始条件每次循环前都应初始化,这种问题

只是偶尔暴露,且易被忽视,也应特别注意。

6.2组员严浩总结

1、在使用文件存储的相关函数时,容易出现错误的是文件的指针!应时刻记住对文件里的数据进行操作

时,都是从文件指针开始进行•用fscanf跟fprintf函数就可以对顶点的编号进行简单存储,打开文件后

记得关闭文件。

2、指针的使用需要非常小心,因为指针时常会指到一些非法的区域,这种错误会造成程序崩溃,甚至是

系统崩溃.

3、在dos的编程环境下,因为其只能分配64K的内存,所以其内存的使用应十分小心,使用完后应立即

回收资源。

C语言程序设计报告

7源代码清单

7.1*.CPP文件

MAIN.CPP

#include"angrypig.h"

voidmain()

{

,,,,,

char*s[4]={"file\\levell.txt/"file\\level2.txt;file\\level3.txt"/"file\\level4.txt"};

inti;

if(fopen("file\\lock.txt"z"rt")==NULL)

lockstart();

for(i=0;i<4;i++)

(

if(fopen(s[i]/,rb,,)==NULL)

filestart();

)

startdonghua();

mainmenu();

}

mainmenu.CPP

#includeHangrypig.h"

voidmainmouse();

voidmainmenuO

(

RGBBMP24color;

VesaSetWriteMode(VESA_COPY);

color.r=255;

color.g=255;

color,b=255;

VesaSetColor(*(unsignedlong*)&color);

ShowBmp24B(0,767/".\\tupian\\mainmenu.bmp");

VesaRect(415z283,628,337);

VesaRect(415,370,628,429);

VesaRect(415,463,628,520);

VesaRect(415,558,628,609);

VesaRect(740,425,870,465);

VesaRect(155,420,280,460);

mainmouse();

)

C语言程序设计报告

voidmainmouse()

(

intxmin,xmax,ymin,ymax,x_max=1023,y_max=767;/*lt匕处原为全局变量*/

intbuttons,xm,ym,xO,yO,x,y;

xmin=l;

xmax=x_max-l;

ymin=l;

ymax=y_max-2;

VesaSetWriteMode(VESA_XOR);

if(init(xminzxmax/yminzymax)==O)/*调用init函数对鼠标器初始化*/

(

printf("MouseorMouseDriverAbsent,Pleaseinstall!");

delay(5000);

exit⑴;

)

x=20;y=20;

cursor(x,y);/*置光标在屏幕中心。*/

for(;;)

(

newxy(&x,&y,&buttons);

if(x>=415&&x<=628&&y>=283&&y<=337&&buttons)

(

delay(lOO);

level();

)

if(x>=415&&x<=628&&y>=370&&y<=429&&buttons)

(

delay(lOO);

highscore();

}

if(x>=415&&x<=628&&y>=463&&y<=520&&buttons)

(

delay(lOO);

help();

)

if(x>=415&&x<=628&&y>=558&&y<=609&&buttons)

(

delay(lOO);

exit(O);

)

if(x>=740&&x<=870&&y>=425&&y<=465&&buttons)

delay(lOO);

c语言程序设计报告

selfset();

if(x>=155&&x<=280&&y>=420&&y<=460&&buttons)

(

delay(lOO);

VS();

)

}

)

help.CPP

#include"angrypig.h"

voidhelpmouse();

voidhelp()

(

VesaSetWriteMode(VESA_COPY);

ShowBmp24B(0,767J.\\tupianWhelp.bmp");

RGBBMP24color;

color.r=0;

color.g=0;

color.b=0;

VesaSetColor(*(unsignedlong*)&color);

out_hz(200,240,“按键:鼠标操作”,"(unsignedlong*)&color,10,2);

out_hz(200,285,“操作:鼠标左键按住小猪拖动,”「(unsignedlong*)&color,10,2);

out_hz(328,330,”调节发射角度,力度,”/(unsignedlong*)&color,10,2);

out_hz(328,375,“松开鼠标发射,*(unsignedlong*)&color,10,2);

color.r=100;

color.g=200;

color.b=50;

VesaSetColor(*(unsignedlong*)&color);

VesaBar(600z460,735,500);

color,r=0;

color.g=0;

color,b=0;

VesaSetColor(*(unsignedlong*)&color);

out_hz(610,465,“主菜单","(unsignedlong*)&color,10,2);

helpmouse();

}

voidhelpmouse()

(

intxmin,xmax,ymin,ymax,x_max=1024,y_max=768;/*此处原为全局变量*/

intbuttons,xm,ym,xO,yO,x,y;;

xmin=l;

xmax=x_max-l;

C语言程序设计报告

ymin=l;

ymax=y_max-2;

VesaSetWriteMode(VESA_XOR);

调用函数对鼠标器初始化*/

if(init(xminzxmax,ymin/ymax)==O)/*init

(

printf("MouseorMouseDriverAbsent,Pleaseinstall!");

delay(5000);

exit⑴;

)

x=100;y=40;

cursor(x,y);/*置光标在屏幕中心。*/

for(;;)

(

newxy(&x,&y,&buttons);

if(x>=600&&x<=735&&y>=460&&y<=500&&buttons)

(

delay(lOO);

mainmenu();

}

)

}

highscore.CPP

#include"angrypig.h"

voidhsmouse();

voidxianshiO();

voidxianshi(char*s);

voidhighscore()

(

VesaSetWriteMode(VESA_COPY);

ShowBmp24B(0,767JtupianWpaihangl.bmp”);

xianshiO();

xianshi("file\\levell.txt");

hsmouse();

voidhsmouse()

(

intxmin,xmax,ymin,ymax,x_max=1024,y_max=768;/*止匕处原为全局变量*/

intbuttons,xm,ym,x,y;;

xmin=l;

xmax=x_max-l;

ymin=l;

ymax=y_max-2;

C语言程序设计报告

VesaSetWriteMode(VESA_XOR);

调用函数对鼠标器初始化*/

if(init(xmin/xmax/ymin/ymax)==O)/*init

(

printf("MouseorMouseDriverAbsentzPleaseinstall!");

delay(5000);

exit⑴;

}

x=100;y=40;

cursor(x,y);/*置光标在屏幕中心。*/

for(;;)

(

newxy(&x,&y,&buttons);

if(x>=0&&x<=243&&y>=106&&y<=222&&buttons)

(

VesaSetWriteMode(VESA_COPY);

ShowBmp24B(0,767,"tupianWpaihangl.bmp");

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论