| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 742 人关注过本帖
标题:求助大神,帮我把推箱子这个程序代码写完整来,别人写的,代码不够完善,箱 ...
只看楼主 加入收藏
yhg206
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-12-10
结帖率:0
收藏
 问题点数:0 回复次数:11 
求助大神,帮我把推箱子这个程序代码写完整来,别人写的,代码不够完善,箱子推不上去呀?????
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int i,j;
void MAP(int map[10][10]);
int main()
{
    char input;   
    int point=0;
    int map[10][10] = {   
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,1,1,1,1,0,0,0},
{0,0,0,1,3,3,1,0,0,0},
{0,0,1,1,2,3,1,1,0,0},
{0,0,1,2,4,4,3,1,0,0},
{0,1,1,2,2,2,2,1,1,0},
{0,1,2,2,1,4,4,2,1,0},
{0,1,2,2,2,6,2,2,1,0},
{0,1,1,1,1,1,1,1,1,0},
{0,0,0,0,0,0,0,0,0,0},
    };
       while (1)
    {
        system("CLS");
        MAP(map);
        
        //找到初始位置
        for (i=0;i<10;i++)
        {
            for (j=0;j<10;j++)
            {
                if (map[i][j]==6)
                    break;
            }
            if (map[i][j]==6)  
                break;
        }
               
        input = getch();
        switch (input)
        {case 72://上移
            if(map[i-1][j]==2)
            {
                map[i][j]=2;
                map[i-1][j]=6;
               
            }
            if(map[i-1][j]==4)
            {
                if (map[i-2][j]==2)
                {
                    map[i][j]=2;
                    map[i-1][j]=6;
                    map[i-2][j]=4;
                }
                 if (map[i-2][j]==3)
                {
                    map[i][j]=2;
                    map[i-1][j]=6;
                    map[i-2][j]=5;
                     point++;  
                    }
             }
        
            break;
        case 80://下移
            if(map[i+1][j]==2)
            {
                map[i][j]=2;
                map[i+1][j]=6;
               
            }
            else if(map[i+1][j]==4)
            {
                if (map[i+2][j]==2)
                {
                    map[i][j]=2;
                    map[i+1][j]=6;
                    map[i+2][j]=4;
                }
                else if (map[i+2][j]==3)
                {
                    map[i][j]=2;
                    map[i+1][j]=6;
                    map[i+2][j]=5;
                    point++;     
                }
               
            }
            break;
        case 75://左移
            if(map[i][j-1]==2)
            {
                map[i][j]=2;
                map[i][j-1]=6;
               
            }
            else if(map[i][j-1]==4)
            {
                if (map[i][j-2]==2)
                {
                    map[i][j]=2;
                    map[i][j-1]=6;
                    map[i][j-2]=4;
                }
                else if (map[i][j-2]==3)
                {
                    map[i][j]=2;
                    map[i][j-1]=6;
                    map[i][j-2]=5;
                    point++;   
                }
            }            
            break;
        case 77://右移
            if(map[i][j+1]==2)
            {
                map[i][j]=2;
                map[i][j+1]=6;
               
            }
            else if(map[i][j+1]==4)
            {
                if (map[i][j+2]==2)
                {
                    map[i][j]=2;
                    map[i][j+1]=6;
                    map[i][j+2]=4;
                }
                else if (map[i][j+2]==3)
                {
                    map[i][j]=2;
                    map[i][j+1]=6;
                    map[i][j+2]=5;
                    point++;     
                }                                
            }
            break;
        }


        if (point==4)
        {
        system("CLS");
        MAP(map);
        break;
        }
            
    }
    printf("\n恭喜通关!\n");
    return 0;
}
void MAP(int map[10][10])
{
            
                for(i=0;i<10;i++)
                {
                    for(j=0;j<10;j++)
                    {
                        switch(map[i][j])
                        {
                        case 0:
                            printf("  ");
                            break;
                        case 1:
                            printf("■");
                            break;
                        case 2:
                            printf("  ");
                            break;
                        case 3:
                            printf("×");
                            break;
                        case 4:
                            printf("◎");
                            break;
                        case 5:
                            printf("☆");
                            break;
                        case 6:
                            printf("♂");
                            break;
                        }            
                    }
                    printf("\n");
                }
}
搜索更多相关主题的帖子: 推箱子 include system 
2012-12-10 10:54
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
大牛

我要成为嘿嘿的黑客,替天行道
2012-12-10 10:56
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
关于上下左右键,按下和弹起是两个消息

楼主在input前加一句getch(),估计能解决你的问题
程序代码:
getch();    //在这加一句getch()
input = getch();
switch (input)
{
case 72://上移


[fly]存在即是合理[/fly]
2012-12-10 12:58
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
刚刚试了下,不是我前面说的问题

因为 4个case中都没考虑下一步是‘×’,所以遇到‘×’就动不了了


[fly]存在即是合理[/fly]
2012-12-10 13:06
王捉熊
Rank: 2
等 级:论坛游民
帖 子:46
专家分:61
注 册:2012-10-23
收藏
得分:0 
我看的书上有这个代码,不过不太懂。

新手上路,说错请勿见怪!
2012-12-10 18:39
h1023417614
Rank: 4
等 级:禁止访问
帖 子:211
专家分:237
注 册:2012-11-30
收藏
得分:0 
楼主,厉害,问一下,你学c语言多久了啊
2012-12-10 18:52
wrz930214
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2012-12-6
收藏
得分:0 
上移那得if判断出了点问题,我的想法是加入一个if(map[i-3][j]==3)
但又考虑到箱子移到最上面后移走光标,×有得变回去
但水平有限,没有完整的理清程序运行过程,所以没写出来
2012-12-10 19:27
中华00编
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-12-10
收藏
得分:0 
♂ 不可以移动到 × 里面  
应该从这入手吧。

2012-12-10 19:52
yhg206
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-12-10
收藏
得分:0 
回复 5楼 王捉熊
哪本书啊?求完整代码啊!!!这个代码是不完善的,还有好多种情况没有考虑到的
2012-12-10 20:51
yhg206
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-12-10
收藏
得分:0 
回复 4楼 azzbcc
你可以帮我完善一下代码么?有蛮多种情况没考虑到的,我是新手啊,c语言学的不过关,搞得头都大了
2012-12-10 20:53
快速回复:求助大神,帮我把推箱子这个程序代码写完整来,别人写的,代码不够完善 ...
数据加载中...
 
   



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

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