设计思路
用一个二维数组来表示整个地图,我们先网上找一张地图来分析下。
分析:地图上有 墙、目的地、箱子、人。可以用数字来在二维数组中对应的标记这些东西,二维数组的大小就是地图的大小。
并加入了计时功能,通过游戏前后获取系统时间,计算二者时间差,差值及为游戏用时,还添加了游戏主界面模块。
#include<stdio.h> // 获取系统时间及计算差值函数
#include<time.h>
int main()
{
time_t timep;
struct tm *p1,*p2;
time(&timep);
p1= gmtime(&timep);
int t,t1,t2;
t1=(p1->tm_hour)6060+(p1->tm_min)*60+(p1->tm_sec);
time(&timep);
//游戏执行函数
p2= gmtime(&timep);
t2=(p2->tm_hour)6060+(p2->tm_min)*60+(p2->tm_sec);
t=t2-t1; // t的值为TIME值
printf(“SCORE:%02d\n”,count);
printf(“TIME:%02d:%02d\n”,t/60,t%60);
return;
}
-----------------------------------------------------------------------------------------------------------------------
while (1) // 主界面模块
{
if(flag)
{
break;
}
printf(" \n");
printf(“请输入选项按回车进入:”);
scanf("%d",&choice);
switch(choice) // 主界面选项判定函数
{
case :
{
system(“cls”);
printf(" \n");
break;
}
-----------------------------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <conio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
time_t timep;
struct tm *p1,*p2;
int map[10][11] = {
//定义地图大小10*11
{
0,0,0,0,0,0,0,0,0,0,0},
{
1,1,1,1,1,1,1,1,1,1,1}, //0代表空地
{
1,1,1,0,0,1,0,0,1,1,1}, //1代表墙
{
1,1,0,4,0,1,0,0,0,1,1}, //3代表目的地
{
1,1,0,0,0,4,0,0,0,1,1}, //4代表箱子
{
1,1,0,4,0,0,1,0,0,0,1}, //5代表人
{
1,1,0,1,1,1,1,0,4,0,1},
{
1,0,0,8,3,0,0,1,0,0,1},
{
1,0,0,3,3,0,0,0,0,1,1},
{
1,1,1,1,1,1,1,1,1,1,1} };
void DrawMap() //绘制地图 //二维数组+switch()
{
//遍历二维数组 //0 打印空格 //1 墙 //3 目的地
for (int i = 0;i < 10; i++)
{
for (int j= 0; j < 11; j++)
{
//if else switch
switch(map[i][j])
{
case 0:
printf(" ");
break;
case 1:
printf("■")