这是大一的时候的课程设计,今天记录一下。
如果有需要的请说明版权:CSDN高校俱乐部滨州学院分部。
#include
#include
#include
#include
#include
void restart(int map[100])
{
int m[100]={0,0,0,0,0,2,1,0,0,3,0,0,0,2,0,0,0,2,0,0,4,0,0,1,0,4,0,3,0,0,0,0,0,2,0,0,0,0,2,0,1,0,0,0,0,4,0,0,0,0,2,0,0,0,0,1,0,0,0,0,3,0,0,4,2,0,0,0,0,1,0,0,4,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,4,0,4,0,0,3,2,0,0,0,0,0 };
/*这里是地图代码*/
int i;
for(i=0;i<100;i++)
map[i]=m[i];
printf("地图加载完成");
}
/*用来给map数组赋值*/ /*用来输出游戏规则*/
/*用来输出地图*/
void printmap(int map[])
{
int i=0,j=1;
printf("\t\t\t 骑士飞行棋\n");
printf("'∷'是平地,'¤'是幸运罗盘,'★'是地雷,'■'是暂停,'〓'是时空隧道\n");
printf("\n");
for(i=0;i<31;i++)
{
switch(map[i])
{
case 0:printf("∷");break;
case 1:printf("¤");break;
case 2:printf("★");break;
case 3:printf("■");break;
case 4:printf("〓");break;
case 10:printf("A");break;
case 20:printf("B");break;
case 100:printf("@@");break;
}
}
printf("\n");
for(;i<35;i++)
{
switch(map[i])
{
case 0:printf(" ∷\n");break;
case 1:printf(" ¤\n");break;
case 2:printf(" ★\n");break;
case 3:printf(" ■\n");break;
case 4:printf(" 〓\n");break;
case 10:printf(" A\n");break;
case 20:printf(" B\n");break;
}
}
for(;i<66;i++)
{
switch(map[66-(j++)])
{
case 0:printf("∷");break;
case 1:printf("¤");break;
case 2:printf("★");break;
case 3:printf("■");break;
case 4:printf("〓");break;
case 10:printf("A");break;
case 20:printf("B");break;
}
}
printf("\n");
for(;i<69;i++)
{
switch(map[i])
{
case 0:printf("∷\n");break;
case 1:printf("¤\n");break;
case 2:printf("★\n");break;
case 3:printf("■\n");break;
case 4:printf("〓\n");break;
case 10:printf("A\n");break;
case 20:printf("B\n");break;
}
}
for(;i<100;i++)
{
switch(map[i])
{
case 0:printf("∷");break;
case 1:printf("¤");break;
case 2:printf("★");break;
case 3:printf("■");break;
case 4:printf("〓");break;
case 10:printf("A");break;
case 20:printf("B");break;
case 100:printf("@@");break;
}
}
printf("\n");
printf("\n");
}
/*用来输出地图*/
/*用来输出地图*/
void donghua(int map[], int a,int b)
{
int i ;//代表map【】数组的元素值
int t , u;//t代表玩家A在数组中的下标 u代表玩家B在数组中的下标
int x , y;//x表示掷出骰子时玩家A骰子的值 y表示掷出骰子时玩家B骰子的值
int z ;//作为幸运罗盘交换位置时的中间变量
char c ;//作为输入幸运罗盘选择时的变量
int A = 0, B = 0;//A = 0 代表玩家A初始的位置 B = 0 代表玩家B初始的位置
int e = 2, q = 2;//控制暂停
system ("cls");//清屏
printmap(map);//调用函数printmap(map)用来输出地图
do
{
system("pause");
for(i = 0 ; i < 100 ; i++)//判断这个数组内有没有值为10 以保证地图上只有一个A
{
if(map[i] == 10)
{
map[i] = 0 ;//清除 地图上的A
break;
}
}
if(e == 2)
{
if(q == 0 || q ==1 )
{
q++;
}
srand(time(NULL));//和下一行见课本107页
x = rand()%6 +1;
A = A + x ;//将x的值加到A中
t = A - 1 ; //数组的下标
printf("丁零当啷......");
printf("\n");
printf("++++++玩家A 掷出%d的点数++++++++++++++\n" , x );
printf("\n");
printf("------玩家A现在在第%d 格--------------\n" , A );
Sleep(1800);//暂停1.8秒
}
if(q == 2 )
{
if(e == 0 || e == 1)
{
e++;
}
srand(time(NULL));//和下一行见课本107页
y = rand()%6 +1;
B = B + y ;//将y的值加到B中
u = B - 1 ;//数组的下标
printf("丁零当啷......");
printf("\n");
printf("++++++玩家B 掷出%d的点数++++++++++++++\n" , y );
printf("\n");
printf("------玩家B现在在第%d 格--------------\n" , B );
Sleep(1000);//暂停1秒
}
if (map[t] == 0)//如果是普通的道路
{
map[t] = 10;//将所在位置变为A
system ("cls");//清屏
printmap(map);//调用函数printmap(map)用来输出地图
}
if(map[t] == 2) //如果碰到地图上的地雷 地雷用1表示
{
A = A - 6;//A的变化
t = A - 1;//下标的变化
map[t] = 10;//改变地图上的输出的 字符
system ("cls");//清屏
printf("\n");printf("\n");
printf("SORRY , 你踩到地雷了 要后退6步●﹏●\n");
printf("玩家A现在在第%d 格--------------------------\n" , A );
printf("\n");printf("\n");
printmap(map);//调用函数printmap(map)用来输出地图
}
if(map[t] == 4)//如果碰到地图上的时空隧道 时空隧道用2表示
{
A = A + 10;//A的变化
t = A - 1;//下标的变化
map[t] = 10;//改变地图上的输出的 字符
system ("cls");//清屏
printf("\n");printf("\n");
printf("Oh My God , 时空隧道!! 冲啊^_^\n");
printf("玩家A现在在第%d 格--------------------------\n" , A );
printf("\n");printf("\n");
printmap(map);//调用函数printmap(map)用来输出地图
}
if(map[t] == 1)//如果碰到幸运罗盘 幸运罗盘用3表示
{
system ("cls"); //清屏
printf("玩家A恭喜来到幸运罗盘!\n");
printf("请做出选择:\n");
printf("按1.和对方骑兵交换位置 \n按2.轰炸对方骑兵(炸退六步) 按其他键: 还是算了\n");
printf("请按 回车键 确认\n");
scanf("%d" , &c);//输入进行的选择
switch(c)
{
case 1:
{
printf("嗖嗖嗖............\n");
printf("B: \" ??? 怎么回事?? \" \n");
z = A ;//A和B交换位置
A = B ;
B = z ;
u = B - 1;//下标的变化
t = A - 1;//下标的变化
map[t] = 10;//改变地图上的输出的 字符
map[u] = 20;//改变地图上的输出的 字符
system ("cls");//清屏
printmap(map);//调用函数printmap(map)用来输出地图
break;
}
case 2 :
{
printf("轰轰............\n");
B = B - 6 ;//B碰到地雷减六步
u = B - 1;//下标的变化
t = A - 1;//下标的变化
map[t] = 10;//改变地图上的输出的 字符
map[u] = 20;//改变地图上的输出的 字符
system ("cls");//清屏
printmap(map);//调用函数printmap(map)用来输出地图
break;
}
default :
{
break;
}
}
}
if(map[t] == 3)//如果碰到 暂停 暂停用4表示
{
map[t] = 10;//改变地图上的输出的 字符
e = 0;
system ("cls");//清屏
printf("\n");printf("\n");
printf("暂停?? 暂停?!!!");
printf("\n");printf("\n");
printmap(map);//调用函数printmap(map)用来输出地图
}
if(A>=99)//如果A的步数大于99
{
map[99] = 10;//为了在地图最后一格显示则让最后一格显示为A
system ("cls");//清屏
printmap(map);//调用函数printmap(map)用来输出地图
}
system("pause");
for(i = 0 ; i < 100 ; i++)
{
if(map[i] == 20 || map[i] == 100)
{
map[i] = 0 ;
break;
}
}
if (map[u] == 0)//如果是普通的道路
{
map[u] = 20;
system ("cls");//清屏
printmap(map);//调用函数printmap(map)用来输出地图
}
if(map[u] == 2)//如果碰到地图上的地雷 地雷用1表示
{
B = B - 6;
u = B - 1;//下标的变化
map[u] = 20;//改变地图上的输出的 字符
system ("cls");//清屏
printf("\n");printf("\n");
printf("SORRY , 你踩到地雷了 要后退6步●﹏●\n");
printf("玩家B现在在第%d 格--------------------------\n" , B );
printf("\n");printf("\n");
printmap(map);//调用函数printmap(map)用来输出地图
}
if(map[u] == 4)//如果碰到地图上的时空隧道 时空隧道用2表示
{
B = B + 10;
u = B - 1;//下标的变化
map[u] = 20;//改变地图上的输出的 字符
system ("cls");//清屏
printf("\n");printf("\n");
printf("Oh My God , 时空隧道!! 冲啊^_^\n");
printf("玩家B现在在第%d 格--------------------------\n" , B );
printf("\n");printf("\n");
printmap(map);//调用函数printmap(map)用来输出地图
}
if(map[u] == 1)//如果碰到幸运罗盘 幸运罗盘用3表示
{
system ("cls");//清屏
printf("\n");printf("\n");
printf("玩家B 恭喜你来到幸运罗盘!\n");
printf("请做出选择:\n");
printf("按1.和对方骑兵交换位置 \n按2.轰炸对方骑兵(炸退六步) 按其他键: 还是算了\n");
printf("请按 回车键 确认\n");
scanf("%d" , &c);
switch(c)
{
case 1:
{
printf("嗖嗖嗖............\n");
printf("A: \" ??? 怎么回事?? \" \n");
z = B ;//A和B交换位置
B = A ;
A = z ;
u = B - 1;//下标的变化
t = A - 1;//下标的变化
map[t] = 10;//改变地图上的输出的 字符
map[u] = 20;//改变地图上的输出的 字符
system ("cls");//清屏
printmap(map);//调用函数printmap(map)用来输出地图
break;
}
case 2 :
{
printf("轰轰............\n");
A = A - 6;
u = B - 1;//下标的变化
t = A - 1;//下标的变化
map[t] = 10;//改变地图上的输出的 字符
map[u] = 20;//改变地图上的输出的 字符
system ("cls");//清屏
printmap(map);//调用函数printmap(map)用来输出地图
break;
}
default :
{
break;
}
}
}
if(map[u] == 3)
{
q = 0;
map[u] = 20;//改变地图上的输出的 字符
system ("cls");//清屏
printf("\n");printf("\n");
printf("暂停?? 暂停?!!!");
printf("\n");printf("\n");
printmap(map);//调用函数printmap(map)用来输出地图
}
else if(B>=99)
{
map[99] = 20;
system ("cls");//清屏
printmap(map);//调用函数printmap(map)用来输出地图
}
else if(A == B)
{
map[t] = 100;
system ("cls");
printmap(map);
}
}while (A <= 99 && B <= 99);
if(B > A)
{
printf("B赢了!!B赢了!!B赢了!!\n");
}
else if(A > B)
{
printf("A赢了!!A赢了!!A赢了!!\n");
}
else if(A == B)
{
printf("好悲剧~~A B 平局~~~\n");
}
}
main()
{
int i =0;
int map[100];//变量的声明
int a ,b ;
system("color 71");//改变dos-c的背景颜色
/*颜色属性由两个十六进制数字指定 -- 第一个为背景,
第二个则为前景。每个数字可以为以下任何值之一:
0 = 黑色 8 = 灰色
1 = 蓝色 9 = 淡蓝色
2 = 绿色 A = 淡绿色
3 = 浅绿色 B = 淡浅绿色
4 = 红色 C = 淡红色
5 = 紫色 D = 淡紫色
6 = 黄色 E = 淡黄色
7 = 白色 F = 亮白色*/
restart(map);//调用 函数restart(map)
donghua(map,a,b);//调用 函数 donghua(map,a,b)
}