《骑士飞行棋实训报告.doc》由会员分享,可在线阅读,更多相关《骑士飞行棋实训报告.doc(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、山东理工大学计算机学院实 训 报 告DOS界面开发基础实训班 级 姓 名 学 号 指导教师 二一二年七月五日 实训任务书及成绩评定课题名称 骑士飞行棋、题目的目的和要求: 1、设计目的本实训是实践性教学环节之一,旨在锻炼学生的实践操作能力和综合应用能力,希望通过案例实践,帮助学生掌握DOS界面的开发和应用,具备熟练使用C语言开发界面、感受游戏开发过程等。2.要求学生掌握:(1)、C语言的规范、结构和标记。(2)、数组、链表的定义和使用。(3)、C语言的程序设计基础、面向对象编程、操作、事件处理和特效,感受游戏的开发过程等(4)、综合应用各种前台技术开发DOS页面。2、设计题目要求: 第一部分游
2、戏端首页(1)角色的分配及及游戏规则:游戏规则和传统的飞行棋一样,支持两人对战采用100格小型游戏棋盘游戏规则:对战双方轮流掷骰子控制自己的骑兵前进或后退,在游戏棋盘上设置有关卡 普通 地雷 暂停 时空隧道 幸运轮盘(提供两种运气:交换位置和轰炸)棋盘上的关卡只在骑兵第一次移动遇到时有效(2)棋盘示例:第二部分:游戏过程 (1)地图显示思路: 将对战地图划分成4个部分分别显示 奇数行:顺序输出地图数组中代号对应图像 右竖行:先输出空格,再输出数组中代号对应图像 偶数行:逆序输出地图数组中代号对应图像(2) 游戏进行中的界面第三部分:游戏结束,玩家胜负已分、设计进度及完成情况日 期内 容7.1分
3、析所给题目,初步划分侧重点,并初步制定流程7.2对所给题目进行详细的研究并细读有关资料7.3做出所给题目,讨论研究并调试检查错误,7.4对所给题目进行综合考虑,并进行再次修改7.5答辩,思考老师的评价、系统实现-主要功能代码void Welcome()printf(n);printf(/ /n);printf(/ /n);printf(/ 骑 士 飞 行 棋 /n);printf(/ /n);printf(/ /n);printf(n);printf(nnnn);printf(两人对战nn);printf(请选择角色:1.曹操 2.孙权 3.刘备 n);printf(请玩家1选择角色:);/玩
4、家1选择角色scanf(%d,&name1);printf(n请玩家2选择角色:);/玩家2选择角色scanf(%d,&name2);system(cls);/清屏/打印规则void Rule()printf(游戏规则nn);printf(1.两个玩家轮流掷骰子,如果上轮走到暂停关卡,停掷一次nn);printf(2.若玩家走到幸运轮盘,则和对方交换位置或者对方后退6步nn);printf(3.若玩家走到某格,而对方也在此格,则对方退回原点nn);printf(4.若遇到地雷后退6步nn);printf(5.若遇到暂停则此玩家下一回合停止掷骰子nn);printf(6.若遇到时空隧道再前进10
5、步nn);printf(7. : 普通 :暂停 :地雷 : 幸运转盘 :时空隧道n);printf(n8.玩家1: 玩家2:n);printf(按按任意键继续:n);/按任意键继续getch(); system(cls);void mapp()Random();int i,k;/标记为空格for(k=2;k31;k+)map0k=5;for(i = 2;i 5; i+)for(k = 0; k 30;k+)mapik=5;for(i = 6; i 9;i+)for(k = 1; k 31;k+)mapik=5;map1();/打印地图/打印地图void map1()int i,k;/开始打印f
6、or(i = 0; i 10; i+)for(k = 0; k 31; k+)if(mapik=0 )printf();else if(mapik=1)printf();else if(mapik=2)printf();else if(mapik=3 )printf();else if(mapik=4) printf();else if(mapik=6)printf();else if(mapik=7)printf();else printf( );printf(n);void Random()int k=0,i=0;int a5;srand(time(NULL);/将系统当前时间设置为随机数
7、种子int Num;int s1,s2;while(1)Num = rand()%10;/产生小于10的随机数if(Num 3)ai=Num;i+;if(i=4)break;for(i=1;i 0 & s1 1 & s2 6 & s2 ai-1)printf(n);break;int Randomm()int Num;srand(time(NULL);/将系统当前时间设置为随机数种子while(1)Num=rand()%10;if(Num 0 & Num 7)break;return Num;void copyy1()int i,k;int s=1;for(i=1,k=0;k31;k+)ste
8、ps=mapik;s+;for(i=30,k=2;k-1;k-)steps=mapik;s+;for(i=0,k=6;k9;k+)steps=mapki;s+;for(i=9,k=0;k31;k+)steps=mapik;s+;void Process()int w;while(step1 99 & step2= 99) system(cls); end(1); /退出 break; Mobile(6,w,0); /system(cls); copypp2(); map1(); /玩家2 掷骰子 if(n2&na2) n2=0; n1=1; if(na1=0) n1=0;na1=1;n2=1;
9、 printf(玩家2掷骰子,按任意键:); getch(); w=Randomm();/掷骰子获得移动的步数 printf(玩家2走的步数:%dn,w); getch(); if(step2+w)= 99) system(cls); end(2); break; /移动 Mobile(7,w,0); /system(cls); copypp2(); map1(); void Mobile(int nam,int st,int ww)if(nam=6)stepstep1=0;step1+=st;if(step10)step1=0;Judgment(nam,step1,ww);else step
10、step2=0;step2+=st;if(step20)step2=0;Judgment(nam,step2,ww);void Judgment(int nam,int st,int ww)int i;i=stepst;switch(i)case -1:break; case 0: stepst=nam;/普通格break; case 1: if(Randomm()3)/幸运轮盘stepstep1=7;/和对方交换位置-做交换stepstep2=6;else /轰炸对方-对方退6步stepst=nam;if(nam=6)Mobile(7,-6,1);else Mobile(6,-6,1);br
11、eak; case 2: stepst=nam;if(nam=6)Mobile(7,-6,1);else Mobile(6,-6,1);break; /地雷 /退后6步 case 3: stepst=nam;/暂停键 if(nam=6) na1=0; if(ww=1) na1=1;n2=1; else na2=0; if(ww=1) na2=1;n1=1; /设置状态变量为暂停,标识下轮暂停 break; case 4: stepst=nam;if(nam=6)Mobile(6,10,1);else Mobile(7,10,1);break;/时空隧道 /再前进10步case 6:stepst
12、=nam;step1=0;break;case 7:stepst=nam;step2=0;break;void copypp2()int i,k;int s=1;for(i=1,k=0;k31;k+)mapik=steps;s+;for(i=30,k=2;k-1;k-)mapik=steps;s+;for(i=0,k=6;k9;k+)mapki=steps;s+;for(i=9,k=0;k31;k+)mapik=steps;s+;IV、实训感悟 通过对此项目的开发,我更加了解关于DOS界面的开发流程,也使我在实践当中不断完善自己的知识系统,是自己充分的了解了理论知识。在此由衷的感谢指导教师张立红老师。 V、主要参考文献及资料1 张海潘. 软件工程导论M. 北京:清华大学出版社, 1998.2 王为青,刘变红 C语言高级编程及实例剖析 人民民邮电出版社 2007-3-1VI、成绩评定:设计成绩: (教师填写)指导老师: (签字) 二一二 年 七 月 五 日