| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 554 人关注过本帖
标题:写了一个推箱子 运行后问题
只看楼主 加入收藏
悔悟
Rank: 1
等 级:新手上路
帖 子:12
专家分:5
注 册:2012-7-22
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:5 
写了一个推箱子 运行后问题
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define n 10//地图大小
#define x 3//箱子数
#define y 6//位置
#define b 4//箱子
#define r 7//
int a[n][n]={
    {9,9,9,9,9,9,9,9,9,9},
{9,8,1,1,1,1,9,y,y,9},
{9,1,9,1,1,1,9,1,1,9},
{9,1,9,1,y,9,9,1,1,9},
{9,1,1,1,1,1,b+1,1,1,9},
{9,1,1,1,1,b+1,1,1,1,9},
{9,1,1+b,1,1,1,9,1,1,9},
{9,1,1,1,1,1,1,9,1,9},
{9,1,1,1,1,1,1,9,1,9},
{9,9,9,9,9,9,9,9,9,9}
};
int cont;
void move(int m,int g,int i,int j);//移动函数
void huatu(int a[n][n]);//画图
int system(const char*string);
int main(void)
{
    char ch;
    int m=1;
    int g=1;
    huatu(a);
    while(1)
    {
    fflush(stdin);
    ch=getch();
    if(ch!=EOF)
        system("cls");
    switch(ch)
    {
    case 'w': move( m, g,-1,0);break;
    case 's': move( m, g,1,0);break;
    case 'a': move( m, g,0,-1);break;
    case 'd': move( m, g,0,1);break;
    };
    huatu(a);
    if(cont==x)
        printf("成功\n");};
    return 0;

}
void move(int m,int g,int i,int j)
{
    if(a[m+i][g+j]==9)//撞墙
        a[m][g]=r+1;
    else if(a[m+i][g+j]==b+1&&a[m+2*i][g+2*j]==9)//箱子撞墙
        a[m][g]=r+1;
    else if(a[m+i][g+j]==b+1&&a[m+2*i][g+2*j]==y)//箱子入位子
    {
        a[m][g]-=r;
        a[m+i][g+j]-=b;
        a[m+i][g+j]+=r;
        a[m+2*i][g+2*g]+=b;
        m+=i;
        g+=j;
    }
    else if(a[m+i][g+j]==b+1&&a[m+2*i][g+2*j]==1)//推动箱子
    {
        a[m][g]-=r;
        a[m+i][g+j]-=b;
        a[m+i][g+j]+=r;
        a[m+2*i][g+2*j]+=b;
        m+=i;
        g+=j;
    }
    else  {a[m][g]-=r;
    a[m+i][g+j]+=r;
    m+=i;
    g+=j;
    }
}
void huatu(int a[n][n])
{
    int cont=0;
    int i,j;
    for(i=0;i<n;i++)
    {    for(j=0;j<n;j++)
        {
            if(a[i][j]==b+y)
            {cont++;}
            switch (a[i][j])
            {    case 9:printf("");break;
            case 8:printf("");break;
            case 5:printf("");break;
            case y:printf("");break;
            case y+b:printf("");break;
            case r+y:printf("");break;
            default: printf("");}
    };printf("\n");    };
//return cont;
    printf("\n\n\n");
    printf("■是墙;◎是人;◇是箱子;○是目的地;");
}

以上是源码;
运行后按d没错 在左移就发生人不见了
搜索更多相关主题的帖子: 推箱子 
2012-09-04 10:55
zhangqi_gsts
Rank: 6Rank: 6
来 自:甘肃天水
等 级:侠之大者
威 望:1
帖 子:227
专家分:457
注 册:2011-3-27
收藏
得分:14 
写这样的程序,如果把问题解决了,你就写了一个真正的程序,如果就此放弃,等于你没写
2012-09-05 23:31
悔悟
Rank: 1
等 级:新手上路
帖 子:12
专家分:5
注 册:2012-7-22
收藏
得分:0 
回复 2楼 zhangqi_gsts
解决了 嘿嘿
2012-09-07 11:59
aa59710014
Rank: 1
等 级:新手上路
帖 子:57
专家分:6
注 册:2012-8-30
收藏
得分:0 
厉害

为热爱而坚持!
2012-09-07 20:54
aa59710014
Rank: 1
等 级:新手上路
帖 子:57
专家分:6
注 册:2012-8-30
收藏
得分:0 
写了多久

为热爱而坚持!
2012-09-07 20:55
sam108
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-4-8
收藏
得分:0 
回复 楼主 悔悟
楼主能把修改后的程序源代码发给我嘛?
2013-04-23 22:52
快速回复:写了一个推箱子 运行后问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.112313 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved