骑士飞行棋实训报告文档格式.docx
- 文档编号:18592483
- 上传时间:2022-12-28
- 格式:DOCX
- 页数:18
- 大小:43.59KB
骑士飞行棋实训报告文档格式.docx
《骑士飞行棋实训报告文档格式.docx》由会员分享,可在线阅读,更多相关《骑士飞行棋实训报告文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
(2)棋盘示例:
第二部分:
游戏过程
(1)地图显示思路:
将对战地图划分成4个部分分别显示
奇数行:
顺序输出地图数组中代号对应图像
右竖行:
先输出空格,再输出数组中代号对应图像
偶数行:
逆序输出地图数组中代号对应图像
(2)游戏进行中的界面
第三部分:
游戏结束,玩家胜负已分
Ⅱ、设计进度及完成情况
日期
内容
7.1
分析所给题目,初步划分侧重点,并初步制定流程
7.2
对所给题目进行详细的研究并细读有关资料
7.3
做出所给题目,讨论研究并调试检查错误,
7.4
对所给题目进行综合考虑,并进行再次修改
7.5
答辩,思考老师的评价
Ⅲ、系统实现--主要功能代码
voidWelcome()
{
printf("
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"
);
////\n"
//骑士飞行棋//\n"
\n\n\n\n"
≈≈≈≈≈≈≈≈≈≈≈≈两人对战≈≈≈≈≈≈≈≈≈≈≈≈≈≈\n\n"
请选择角色:
1.曹操2.孙权3.刘备\n"
请玩家1选择角色:
"
//玩家1选择角色
scanf("
%d"
&
name1);
\n请玩家2选择角色:
//玩家2选择角色
name2);
system("
cls"
//清屏
}
//打印规则
voidRule()
≈≈≈≈≈≈≈≈≈≈≈游戏规则≈≈≈≈≈≈≈≈≈≈≈≈\n\n"
1.两个玩家轮流掷骰子,如果上轮走到暂停关卡,停掷一次\n\n"
2.若玩家走到幸运轮盘,则和对方交换位置或者对方后退6步\n\n"
3.若玩家走到某格,而对方也在此格,则对方退回原点\n\n"
4.若遇到地雷后退6步\n\n"
5.若遇到暂停则此玩家下一回合停止掷骰子\n\n"
6.若遇到时空隧道再前进10步\n\n"
7.∷:
普通■:
暂停★:
地雷¤
:
幸运转盘〓:
时空隧道\n"
\n8.玩家1:
①玩家2:
②\n"
按按任意键继续:
\n"
//按任意键继续
getch();
voidmapp()
Random();
inti,k;
//标记为空格
for(k=2;
k<
31;
k++)
{
map[0][k]=5;
}
for(i=2;
i<
5;
i++)
for(k=0;
k<
30;
{map[i][k]=5;
}
for(i=6;
i<
9;
i++)
for(k=1;
31;
map[i][k]=5;
map1();
//打印地图
voidmap1()
//开始打印
for(i=0;
i<
10;
k++)
{
if(map[i][k]==0)
{
printf("
∷"
}
elseif(map[i][k]==1)
¤
elseif(map[i][k]==2)
★"
elseif(map[i][k]==3)
■"
elseif(map[i][k]==4)
〓"
elseif(map[i][k]==6)
①"
elseif(map[i][k]==7)
②"
elseprintf("
"
printf("
voidRandom()
intk=0,i=0;
inta[5];
srand(time(NULL));
//将系统当前时间设置为随机数种子
intNum;
ints1,s2;
while
(1)
Num=rand()%10;
//产生小于10的随机数
if(Num<
10&
&
Num>
3)
a[i]=Num;
i++;
if(i==4)
break;
for(i=1;
i<
5;
k=0;
s1=rand()%30;
//产生小于30的随机数
s2=rand()%10;
//产生小于10的随机数
//
if((s1>
0&
s1<
31&
(s2==1||s2==5||s2==9))||
(s1==30&
s2>
1&
s2<
6)||(s1==0&
6&
10))
map[s2][s1]=i;
k++;
if(k>
a[i-1])
printf("
intRandomm()
Num=rand()%10;
if(Num>
Num<
7)
returnNum;
voidcopyy1()
ints=1;
for(i=1,k=0;
step[s]=map[i][k];
s++;
for(i=30,k=2;
step[s]=map[k][i];
for(i=5,k=30;
k>
-1;
k--)
for(i=0,k=6;
9;
for(i=9,k=0;
voidProcess()
intw;
while(step1<
99&
step2<
99){//任意一个人走到终点,跳出循
//玩家1掷骰子
if(n1&
na1){
n1=0;
n2=1;
if(na2==0)
n2=0;
na2=1;
n1=1;
玩家1掷骰子,按任意键:
getch();
w=Randomm();
玩家1走的步数:
%d\n"
w);
if((step1+w)>
=99){
system("
end
(1);
//退出
break;
Mobile(6,w,0);
//system("
copypp2();
map1();
//玩家2掷骰子
if(n2&
na2){
n2=0;
n1=1;
if(na1==0)
n1=0;
na1=1;
n2=1;
玩家2掷骰子,按任意键:
//掷骰子获得移动的步数
玩家2走的步数:
if((step2+w)>
end
(2);
//移动
Mobile(7,w,0);
voidMobile(intnam,intst,intww)
if(nam==6)
step[step1]=0;
step1+=st;
if(step1<
0)
step1=0;
Judgment(nam,step1,ww);
else{
step[step2]=0;
step2+=st;
if(step2<
step2=0;
Judgment(nam,step2,ww);
voidJudgment(intnam,intst,intww)
inti;
i=step[st];
switch(i){
case-1:
break;
case0:
step[st]=nam;
//普通格
case1:
if(Randomm()<
3)//幸运轮盘
step[step1]=7;
//和对方交换位置--做交换
step[step2]=6;
else{//轰炸对方--对方退6步
step[st]=nam;
if(nam==6)
Mobile(7,-6,1);
elseMobile(6,-6,1);
case2:
//地雷
//退后6步
case3:
//暂停键
na1=0;
if(ww==1)
{
na1=1;
n2=1;
}
else{
na2=0;
na2=1;
n1=1;
}//设置状态变量为暂停,标识下轮暂停
case4:
Mobile(6,10,1);
elseMobile(7,10,1);
//时空隧道
//再前进10步
case6:
step[st]=nam;
case7:
step2=0;
voidcopypp2()
inti,k;
ints=1;
for(i=1,k=0;
map[i][k]=step[s];
s++;
for(i=30,k=2;
map[k][i]=step[s];
for(i=5,k=30;
for(i=0,k=6;
for(i=9,k=0;
IV、实训感悟
通过对此项目的开发,我更加了解关于DOS界面的开发流程,也使我在实践当中不断完善自己的知识系统,是自己充分的了解了理论知识。
在此由衷的感谢指导教师张立红老师。
V、主要参考文献及资料
[1]张海潘.软件工程导论[M].北京:
清华大学出版社,1998.
[2]王为青,刘变红C语言高级编程及实例剖析人民民邮电出版社2007-3-1
VI、成绩评定:
设计成绩:
(教师填写)
指导老师:
(签字)
二○一二年七月五日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 骑士 飞行 棋实训 报告
