使用数组绘制游戏地图
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
//#include<windows.h>
//#include<mmsystem.h> //播放音乐头文件
//#pragma comment(lib,"winmm.lib") //音乐库文件
int main()
{
//二维数组
//int x[4][3] = { 10,20,30,40,50 };
// //行 列
// int data[4][3] =
// {//列 0 1 2 //行
// {10,20,30},//0行
// {20,40,50},//1行
// {20,10,40},//2行
// {30,20,40} //3行
// };
//// 找出数字10 数字10的位置是0行0列 2行1列
// printf("%d\n", data[0][0]);
// //如何计算第二列所有数的和呢?
// //第二列数的规律: [0][2] [1][2] [2][2] [3][2]
// //int sum = 0 , i; //i 表示行数
// //for(i = 0; i<3; i++)
// //{ //行 列
// // sum += data[i][2];
// //}
// //printf("Sum=%d\n", sum);
// //如何计算对角线中所有数的值?
// //对角线上的数的规律:第一个数在[0][0] 第二个数在[1][1] 第三个数[2][2]
// int sum = 0, i, j; //i表示行数 j表示列数
// for(i = 0;i < 3;i++) //行号
// {
// for (j = 0;j < 4;j++) // 列号
// {
// //判断如果行号与列号相等 输出结果
// if (i == j)
// {
// sum += data[i][j];
// }
// }
// printf("sum=%d\n", sum);
// }
//二维数组绘制游戏地图
int Map[6][5] =
{
1, 1, 1, 1, 1,
1, 0, 0, 0, 1,
1, 0, 1, 0, 1,
1, 0, 1, 0, 1,
1, 0, 1, 2, 1,
1, 0, 3, 1, 1
};//地图数据化
//行 列
int i, j;
for (i = 0; i < 6; i++)
{
for (j = 0; j < 5; j++)
{
switch(Map[i][j])
{
case 0:printf(" "); break;
case 1:printf("■"); break;
case 2:printf("♀"); break;
case 3:printf("★"); break;
}
}
printf("\n");
}
int dx, dy;
//确定人物位置
for(dy = 0; dy < 6; dy++) //行号
{
int flag = 0; //人物标记
for(dx = 0; dx < 5; dx++) //列号
{
if (Map[dy][dx] == 2) //找到人物
{
flag = 1; //找到人物就退出第一层循环
break;
}
}
if (flag)break;
}
printf("%d %d\n", dy, dx); // 就是人物的坐标位置
//实现人物移动
while(1)//死循环
{
switch(getch())
{
case 'W':
Map[dy][dx] = 0;
dy = dy - 1;
Map[dy][dx] = 2;
break;
case 'S':
break;
case 'A':
break;
case 'D':
break;
}
for (i = 0; i < 6; i++)
{
for (j = 0; j < 5; j++)
{
switch (Map[i][j])
{
case 0:printf(" ");break;
case 1:printf("■");break;
case 2:printf("♀");break;
case 3:printf("★");break;
}
}
printf("\n");
}
}
system("pause");
return 0;
}