鱼C论坛

 找回密码
 立即注册
查看: 2077|回复: 1

[技术交流] 编写推箱子! 移动的人和地图

[复制链接]
发表于 2016-5-17 15:09:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 yiwan 于 2016-5-17 15:22 编辑


#include <stdio.h>
#include <stdlib.h>
#incluse <conio.h>

#define H 10 //地图高
#define W 10 //地图宽

typedef struct
{
   char person_x;
   char person_y;
}BOY;

int map[H][W]={0};

void initmap(void); //初始化地图!
void pmap(void);
BOY person(void);  //当前人物位子!
void move(BOY,char ch);    //移动坐标!

int main()
{
    char ch;
    initmap();
    pmap();

    while(1)
    {
    ch=getch();
    if(ch==27)
    {
        break;
    }
    while(ch=='a'&&ch=='s'&&ch=='d'&&ch=='w')
    {
    ch=getch();
    }
    move(person(),ch);
    pmap();
    }


}

void initmap(void)
{
    int i,j;
    for(i=0;i<H;i++)
    {
        for(j=0;j<W;j++)
        {
            if(i==0||i==H-1||j==0||j==W-1)
            {
                map[i][j]=9;
            }
            else if(i==4&&j==5)
            {
                map[i][j]=5;
            }
        }
    }
}

void pmap()
{
    int i,j;
    system("cls");
    for(i=0;i<H;i++)
    {
      
        for (j=0;j<W;j++)
        {
           if(map[i][j]==9)
           {
                printf("□");
           }
           else if(map[i][j]==0)
           {
               printf("  ");
           }
           else if(map[i][j]==5)
           {
               printf("♀");
           }
        }
         printf("\n");
    }

}

BOY person(void)
{
    BOY son;
    int i,j;
    for(i=0;i<H;i++)
    {
        for(j=0;j<W;j++)
        {
            if(map[i][j]==5)
            {
                son.person_y=i;
                son.person_x=j;
            }
        }
    }
    return son;
   
}

void move(BOY boy,char ch)
{
    BOY boy2=boy; //保存当前人物位置;
    map[boy.person_y][boy.person_x]=0;
    switch(ch)
    {
    case 'a':
    case 'A':boy.person_x-=1;break;
    case 's':
    case 'S':boy.person_y+=1;break;
    case 'd':
    case 'D':boy.person_x+=1;break;
    case 'w':
    case 'W':boy.person_y-=1;break;
    }

    if(map[boy.person_y][boy.person_x]==9) //撞墙检测
    {
        map[boy2.person_y][boy2.person_x]=5;
    }
    else
    {
        map[boy.person_y][boy.person_x]=5;
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-5-17 15:10:04 | 显示全部楼层
后续编写中!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-27 02:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表