c语言推箱子代码

合集下载

推箱子c语言程序设计

推箱子c语言程序设计

推箱子c语言程序设计1.引言1.1 概述概述推箱子游戏作为一款经典的益智游戏,具有很高的趣味性和挑战性,受到了广大玩家的喜爱。

本文旨在介绍通过C语言程序设计实现推箱子游戏的过程。

本文将从游戏的背景介绍、基本规则和玩法等方面展开叙述。

推箱子游戏的背景是一个仓库,玩家需要控制一个工人将货物推到指定的放置点。

游戏地图由一系列的方块组成,每个方块可能是墙壁、货物、放置点、工人或者空地。

玩家通过移动工人将货物推动到目标位置,最终完成整个地图的挑战。

C语言作为一种基础的编程语言,广泛应用于各种程序设计中。

通过使用C语言来编写推箱子游戏的程序,我们可以深入理解游戏的基本逻辑和算法,并将其应用于其他类似的益智游戏中。

本文将首先介绍推箱子游戏的基本规则和玩法,包括工人的移动、货物的推动以及地图的布局等方面。

之后,我们将详细讲解如何使用C语言来实现推箱子游戏的各个功能,包括游戏的初始化、地图的生成、玩家操作的响应等。

通过本文的学习,读者可以掌握使用C语言来进行程序设计的基本技巧和方法,同时也能够熟悉并理解推箱子游戏的内部实现原理。

希望本文对读者有所帮助,能够引发对程序设计和游戏开发的兴趣,同时也能够为读者在后续的学习和实践中提供一定的参考价值。

1.2 文章结构文章结构部分的内容:文章的结构是为了使读者能够更好地理解和掌握推箱子游戏的C语言程序设计。

通过以下几个方面来介绍文章的结构:1. 简介:在本部分中,将对推箱子游戏的背景和意义进行简要介绍。

推箱子作为一种逻辑思维和策略性很强的游戏,对于培养思维能力和解决问题的能力有着重要意义。

因此,本文将介绍推箱子游戏的特点和玩法,以及C语言程序设计对于实现推箱子游戏的重要作用。

2. 目标:本部分将明确阐述本文的目标。

主要包括两个方面:一是介绍如何使用C语言进行推箱子游戏的程序设计;二是帮助读者理解和掌握C语言程序设计的基本原理和方法,为自己编写其他游戏程序打下基础。

3. 主体内容:本文的主要内容包括两个方面。

用C++实现推箱子

用C++实现推箱子

⽤C++实现推箱⼦本⽂实例为⼤家分享了C++实现推箱⼦游戏的具体代码,供⼤家参考,具体内容如下// 1.cpp : 此⽂件包含 "main" 函数。程序执⾏将在此处开始并结束。//

#include #include //■#include #include using std::cout;const int row = 12;const int col = 13;int x = 1;int y = 11;int map[row][col] = { {2,2,2,2,2,2,2,2,2,2,2,2,2}, {2,0,0,0,0,0,0,0,0,0,0,5,2}, {2,0,0,0,0,0,0,0,0,0,3,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,1,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,2}, {2,0,0,0,0,0,0,0,0,0,0,0,2}, {2,2,2,2,2,2,2,2,2,2,2,2,2},};

void draw() { int i; for (i = 0; i < 12; i++) { for (int j = 0; j < 13; j++) { switch (map[i][j]) { case 0: { cout << " ";//0代表可以⾛的空格 break; } case 1: { cout << "★";//1代表箱⼦,⽤我就★代替了 break; } case 2: { cout << "■";//2代表了墙,不能逾越 break; } case 3: { cout << "☆"; break; }

C语言推箱子程序设计

C语言推箱子程序设计
{case DOWN:
//printf("\n下\n");
manf_p.x=man_p.x;manff_p.x=man_p.x;
manf_p.y=man_p.y+1,manff_p.y=man_p.y+2;
X=0,Y=1;
break;
case UP:
//printf("\n上\n");
manf_p.x=man_p.x;manff_p.x=man_p.x;
void findman(int &a,int &b,int map[14][16]);/*找到小人坐标位置*/
unsigned char getKey();/*获得有效按键返回按键值*/
int getmap(Point p,int map[14][16]);/*获得点p的地图值*/
void moveman(Point man_p,Point manf_p,int X,int Y,int map[14][16]);/*人移动*/
#define N_AISLE 0
#define WALL "■" //墙壁
#define N_WALL 1
#define AIM "※" //未放箱子的目标
#define N_AIM 2
#define BOX "□" //未在目标位置的箱子
#define N_BOX 3
#define MAN "♀" //人
(注:VC运行时,分别新建两个文件BotIt.cpp和Maps.h,再在同一目录下运行其中cpp)
代码部分
文件“BoxIt.cpp”如下:
#include <stdio.h>

C语言课程设计-基于C语言推箱子游戏设计-毕业论文.doc

C语言课程设计-基于C语言推箱子游戏设计-毕业论文.doc

gd工程职业技术学院毕业论文基于C语言的推箱子游戏设计Design of the push box Based on Combined Language作者姓名:学科专业:应用电子技术学院(系部):机电工程系指导教师:gd工程职业技术学院2013年1月摘要近年来随着科技的飞速发展,C语言的应用正在不断深入。

C语言目前是国际上比较流行的计算机高级编程语言之一,因其简洁、使用方便且具备强大的功能而受到编程人员的普通青睐。

它既适合作为系统描述语言,也可用来编写系统软件,还可以用来编写应用软件和设计游戏等。

本文着重分析用C语言实现一个简单的推箱子游戏,旨在介绍推箱子游戏的实现方法,并逐步介绍C语言图形编程的方法和技巧。

在C语言编写软件WIN-TC上,涉及软中断、二维数组、键盘操作及图形化函数等方面,显示器中断寄存器的设置、二维数组及结构体的定义、键盘上键值的获取、图形方式下光标的显示和定位,以及部分图形函数的使用实现了一个完整的推箱子游戏界面,界面清晰可见。

关键词:C语言;WIN-TC;推箱子AbstractWith the rapid development of science and technology in recent years, C language, applications are continuously in depth. C language is now more popular internationally high-level computer programming language, one of its simplicity, easy to use and with powerful features favored by ordinary programmers. It is suitable as a system description language, can also be used to write system software, application software can also be used to write and design games.This article focuses on analysis using C language to implement a simple Sokoban game aimed at introducing the Sokoban game implementation method, and gradually introduced the C language graphical programming methods and techniques. In the C language software, WIN-TC, the related soft interrupt, two-dimensional array, keyboard operation and graphical functions, etc., the display interrupt register settings, two-dimensional array, and structure of the definition of access keys on the keyboard, graphical mode, the cursor display and positioning, as well as some graphics functions used to achieve a complete Sokoban game interface, the interface clearly visible.Key words: C language; WIN-TC; PushBox目录摘要 (I)Abstract (II)第一章绪论 (1)1.1设计的功能 (1)1.2游戏的编程思想 (1)1.2.1 确定软件的功能 (1)1.2.2 定义软件的核心数据结构 (1)1.2.3 对整个软件进行功能模块划分 (1)1.2.4 整个推箱子游戏的功能介绍 (2)第二章游戏的总体设计 (2)2.1功能模块设计 (2)2.1.1 系统模块图 (2)2.1.2 任务执行流程图 (3)2.1.3 小人移动流程图 (3)2.2数据结构设计 (3)2.2.1 设置全局变量 (3)2.2.2 定义结构体 (4)2.3函数功能描述 (4)第三章推箱子游戏的程序实现 (7)3.1源码分析 (7)3.1.1程序预处理 (7)3.1.2初始化模块 (8)3.1..3画图模块 (12)3.1.4移动箱子模块 (14)3.1.5 移动小人模块 (18)3.1.6 功能控制模块 (25)3.1.7 主函数 (25)3.2运行结果分析 (28)3.2..1进入游戏选关界面 (28)3.2.2游戏第一关 (28)3.2.3.游戏第二、三关 (29)3.2.4 游戏结束 (30)第四章总结 (32)参考文献 (33)第一章绪论1.1设计的功能C语言是我们数计系都要学的一门基础学科。

C语言快速入门——创建推箱子游戏场景

C语言快速入门——创建推箱子游戏场景

C语言快速入门——创建推箱子游戏场景学习指针之前在进入指针学习之前,让我们把前面的内容结合起来,一起编写一个有趣的例子。

你也看到了,我们构建了一个推箱子游戏。

事实上它还不能与你交互,也就是说还不能玩。

不过,单是构造这样一个游戏场景,看起来已经相当有趣了。

文件组织分析•common.h:提供整个程序使用的常量•scene.h:提供场景绘制接口•scene.c:场景绘制实现•main.c:应用程序框架开发过程中,一个项目总会有一些公用的数据供多个模块使用,这里我们使用common.h用于提供此类服务。

现阶段的程序的目的是构建场景,因此我们提供了scene.h/与scene.c,对应提供场景相关功能。

main.c中负责将整个程序装配起来。

Common.h我们固定窗口大小为512x576,地面每个贴片的大小为64x64,因此场景有9行8列。

Scene.hScene.h负责提供场景与主程序之间的装配接口,为此提供了三个接口声明(函数声明)。

Scene.cScene.c是程序的核心实现,因此我们分为多步讲解。

首先看一下需要的常量声明。

场景共需要6种不同的图像资源,因此我们为每种资源分配了一个索引,这样做是为了便于我们在数组中访问。

另一方面这可以使程序有更好的可读性。

想想看,当要使用路面图像时,images[WAY]明显比images[2]更友好。

接下来是程序的数据部分。

需要讲解的是地图部分。

地图中的数字与贴图索引一致,如1代表的就是墙面,绘制时将会使用images[WALL]索引的图像wall.png 来对地面进行贴图。

地图数组类型是char[],而不是int[]。

一方面因为地面贴片不会超过127个;另一方面,我们知道存储一个int要占用4字节的内存空间,而char只需要1字节,这样下来会节省不少内存。

接下来是一组内部函数声明,之所以要重点突出内部二字,是因为它们与Scene.h中的函数作用不一样。

它们仅为Scene.c内部使用而服务,而Scene.h中声明是为外部模块服务的,因此被称为接口。

C语言推箱子,猜数字

C语言推箱子,猜数字

一实验题目1.3.猜数游戏2.4.利用数组和字符显示实现推箱子游戏;二实验内容1,编写一个猜数字游戏,游戏规则:a,一个四位数,各位上的数字不重复,从1到9。

b,按以下提示猜出这个四位数。

c,每次猜测输入的数据给出本次共猜对了多少个数字。

e,给出本次猜对的数字并且位置正确的个数。

2.推箱子游戏用二维数组实现三设计思想1猜数字游戏(1)随即数字和输入数字之间实现每一位的比较,需要把其每一位都独立出来才可,这就需要数组来实现存储。

要输出的数据是记录性数据,可以用全局变量实现。

(2)产生四位不同的随机数字,不知道方法。

可以用一次产生一个,然后判断是否合法,再把这一个和其他几个比较如果一样就一直产生。

这样可以产生四个不同的随机数字。

输入的数字为四位不同的数字,为了实现和随机数逐位的比较需要把它拆分为4个数字。

(3)把独立出来的数字比较,对的就把相应的全局变量+1,(4)输出函数要实现输入一次就刷新一次,就需要处理函数循环调用输出函数,这样不是输出间断。

(5)细节。

可以在相应函数设置判断项实现。

游戏中输入错误了,输出函数要输出提示;过关了要提示。

若玩游戏途中要重新开始了,就重新开始函数。

2 推箱子游戏(1)要求用二唯数组实现推箱子游戏(2)总体设置的思路规划。

A代表人,*箱子,O代表箱子要到的位置,@表位箱子到达了位置.1上2下3左4右.5初始化...w 表示墙壁游戏规则,推箱子进入正确位子。

1.数据初始化:屏幕初始化.用2伟数组实现.2.判断是否胜利.3.输出:胜利输出,一般输出4.实现移动5.输出....循环调用实现自动刷新(3)设置初始函数给各数赋值。

(4)输出函数,把数据全部输出。

判断怎么输出,还要循环来实现一步一刷新实现走动。

(5)设置走动函数。

什么情况下可以走动,什么情况下可以推动,可移动就通过字母的赋值实现走动(6)优化细节。

输入错误提示,重玩提示,过关提示,(7)关数的添加。

输出函数,初始函数由于调用的都是比较集中部分数据,可以把不同的输出和初始集成,再调用实现关数的增加。

CC++实现推箱子小游戏

CC++实现推箱⼦⼩游戏本⽂实例为⼤家分享了C/C++实现推箱⼦⼩游戏的具体代码,供⼤家参考,具体内容如下效果演⽰实现功能如上图所⽰。

按键控制⼩猪的运动,推箱⼦到达⽬的地。

如何实现1.⾸先思考要保存箱⼦,⼩猪等信息,添加多个map可以⽤到三维数组。

2.定义⼩猪,箱⼦,墙,空地等信息在三维数组⾥的数值。

空地 0墙 1⽬的地 2箱⼦ 3猪 4 2+4=6 猪到达⽬的地也显⽰猪箱⼦到达⽬的地 2+3=53.按键实现推箱⼦运动。

考虑多种情况:①.⼩猪的运动(空地,⽬的在)②.⼩猪推箱⼦运动(空地,⽬的地)⽤三维数组保存map信息:这⾥我只做了两种图,可⾃⾏添加int backgrand[MAP][ROW][COL] =//map图{{1, 1, 1, 1, 1, 1, 1, 1,1, 0, 0, 0, 2, 0, 0, 1,1, 1, 0, 0, 3, 1, 1, 1,1, 2, 3, 0, 4, 0, 0, 1,1, 0, 1, 0, 3, 3, 2, 1,1, 1, 0, 3, 2, 0, 0, 1,1, 0, 0, 2, 0, 0, 1, 1,1, 1, 1, 1, 1, 1, 1, 1},{0, 1, 1, 1, 1, 1, 1, 1,1, 1, 0, 2, 0, 0, 0, 1,1, 1, 0, 0, 3, 0, 1, 1,1, 2, 3, 0, 4, 0, 0, 1,1, 0, 1, 0, 0, 0, 1, 1,1, 1, 0, 3, 2, 3, 0, 1,1, 0, 0, 0, 0, 2, 0, 1,1, 1, 1, 1, 1, 1, 1, 1},};绘图⽤到了easyx库,加载图⽚和绘制窗⼝只⽤到了三条语句:很简单initgraph();//绘制窗⼝⼤⼩loadimage();//加载图⽚putinmage();//放出图⽚具体可看代码!代码块#include<stdio.h>#include<Windows.h>#include<stdlib.h>#include<time.h>#include<conio.h>#include<graphics.h>#define ROW 8#define COL 8#define MAP 2//map个可以⾃⼰添加数int count = 0;//哪个map图/*空地 0墙 1⽬的地 2箱⼦ 3猪 4 2+4=6 猪到达⽬的地也显⽰猪箱⼦到达⽬的地 2+3=5*/IMAGE image1, image2, image3, image4, image5, image6;int backgrand[MAP][ROW][COL] =//map图{{1, 1, 1, 1, 1, 1, 1, 1,1, 0, 0, 0, 2, 0, 0, 1,1, 1, 0, 0, 3, 1, 1, 1,1, 2, 3, 0, 4, 0, 0, 1,1, 0, 1, 0, 3, 3, 2, 1,1, 1, 0, 3, 2, 0, 0, 1,1, 0, 0, 2, 0, 0, 1, 1,1, 1, 1, 1, 1, 1, 1, 1},{0, 1, 1, 1, 1, 1, 1, 1,1, 1, 0, 2, 0, 0, 0, 1,1, 1, 0, 0, 3, 0, 1, 1,1, 2, 3, 0, 4, 0, 0, 1,1, 0, 1, 0, 0, 0, 1, 1,1, 1, 0, 3, 2, 3, 0, 1,1, 0, 0, 0, 0, 2, 0, 1,1, 1, 1, 1, 1, 1, 1, 1},};int Judge(){//p判断是否结束⼀局int i = 0;for (i = 0; i < ROW; i++){int j = 0;for (j = 0; j < COL; j++){if (backgrand[count][i][j] == 3 || backgrand[count][i][j] == 2){//判断是否还有箱⼦或者⽬的地 return 0;}}}return 1;}void Backgrand(){//绘制地图int i = 0;for (; i < ROW; i++){int j = 0;for (; j < COL; j++){int x = 80 * j;//横轴是y(列),数轴是x(⾏)。

用C++实现推箱子小游戏

⽤C++实现推箱⼦⼩游戏前⾔推箱⼦⼩游戏相信是很多⼈的同年记忆了,今天⽤c++语⾔来尝试下,⽤的是vs编译器。

代码还有很多可以优化的地⽅,为了更直观了解函数的形参和实参,所以地图没有⽤全局变量声明了,其实⽤全局变量声明会简洁很多。

头⽂件和main函数分享在最下⾯了。

提⽰:以下是本篇⽂章正⽂内容,下⾯案例可供参考⼀、初始化游戏数据void GameInit(int(*&pMap)[10][10], int index)//两张地图数据{// static:返回静态全局区变量static int localmap[2][10][10] ={{1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 0, 0, 0, 0, 0, 0, 0, 0, 1,1, 0, 0, 0, 0, 0, 0, 0, 0, 1,1, 0, 5, 0, 1, 0, 0, 3, 0, 1,1, 0, 0, 0, 1, 0, 0, 3, 0, 1,1, 0, 0, 4, 1, 0, 0, 3, 0, 1,1, 0, 0, 0, 1, 0, 0, 0, 0, 1,1, 0, 0, 0, 1, 0, 0, 0, 0, 1,1, 0, 0, 0, 1, 0, 0, 0, 0, 1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1},{1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 0, 0, 0, 0, 0, 0, 0, 0, 1,1, 0, 0, 0, 0, 4, 0, 0, 0, 1,1, 0, 5, 0, 0, 0, 0, 0, 0, 1,1, 0, 0, 0, 3, 0, 0, 1, 0, 1,1, 0, 0, 0, 0, 0, 0, 1, 0, 1,1, 0, 0, 0, 0, 0, 0, 1, 0, 1,1, 0, 0, 0, 1, 0, 1, 1, 0, 1,1, 0, 0, 0, 1, 0, 0, 0, 0, 1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1}};// 数组指针指向对应关卡的地址pMap = localmap ;//数组名表⽰指针,此时指向第⼀个⼆维数组地图}⽤3维数组来编写两个地图,第⼀关过了就进⼊下⼀关,⽤static关键字声明数组,保证地图数据可以返回出去。

c语言编写小游戏系列教程之推动箱子,C_C++,自学去

设为首页收藏本站快捷导航论坛视频教程c/c++PHP 问答平台编程文章个人空间搜索QQ 群热搜:c 语言java 编程教程自学去学论坛编程语言C/C++c 语言编写小游戏系列教程之推动箱子返回列表电梯直达楼主admin 在线 |每日签到 |我的 |设置 |消息 |提醒(2) |门户管理 |管理中心 |退出积分: 9681 |用户组: 管理员请输入搜索内容帖子索删除主题|升降|置顶|直播|高亮|精华|图章|图标|关闭|移动|分类|复制|合并|分割|修复|警告|屏蔽|标签|生成文章查看: 519|回复: 1[精品文章] c语言编写小游戏系列教程之推动箱子 [复制链接]admin 790主题3975帖子9681积分管理员 发表于 2015­1­4 18:47:19 | 只看该作者 上节课:/thread­15448­1­1.html上节课中 我们已经实现了人物的移动,大家的可以发现,人物可以移动,但是却不能推动箱子,还能穿过障碍物和箱子。

这节课,我们的人物,就是解决这两个问题,推动箱子,还有障碍物检测。

在这之前不得不先说一个问题,随着程序代码越来越多,我们一个文件中代码已经很长了,这样不利于代码的阅读和维护,所以这节课我们决定将代码 按照功能来分成不同的文件,类似模块化编程,每个功能就是一个模块。

如何把代码放到多个文件呢?把代码的申明部分放到,头文件中,实现部分 放到源文件中。

消息新听众(3)坛友互动(1)我的帖子(1)积分9681IP 编辑禁止帖子清理比如,关于箱子操作的函数以及箱子的结构体定义,我们就放在 box.h 中 函数的具体功能实现就放在 box.c 中。

人物操作 就放在 person.h 和 person.c 中。

其他的也是 类似。

头文件如何写?我们看看例子,下面是 box.h 的所有内容01. #ifndef _BOX_H_02. #define _BOX_H_03.04. #include <config.h>05.06. //定义箱子结构体07. typedef struct{08. int x;09. int y;10. char flag;11. int state;12. } box_t;13.14. //设置箱子位置15. void set_box(box_t*, int x, int y);16. //移动箱子,返回0表示成功移动,返回非0表示不能移动17. int move_box(box_t*, dir_t);18. //根据地图坐标获取指定box19. box_t* get_box(int x, int y);20.21. #endif复制代码#ifndef _BOX_H_#define _BOX_H_.............#endif这段代码,作用是防止头文件被重复的包含,重复包含,这些函数就会被重复的申明,编译器将报错。

C语言推箱子步伐


else if(m[i][j]==4) printf("□"); else if(m[i][j]==5) { count++; //每扫描到一个成功值 计数加 1 printf("★");} } printf("\n"); } return count; } void key() //按键操作 { char z; for(;;) { z=getch(); if(z=='w'||z=='W') { a=-1; b=0; break; } else if(z=='a'||z=='A') { a=0; b=-1; break; } else if(z=='s'||z=='S') { a=1; b=0; break; } else if(z=='d'||z=='D') { a=0; b=1; break; } } } void move() {
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,通系电1,力过根保管据护线生高0不产中仅工资2艺料22高试2可中卷以资配解料置决试技吊卷术顶要是层求指配,机置对组不电在规气进范设行高备继中进电资行保料空护试载高卷与中问带资题负料2荷试2,下卷而高总且中体可资配保料置障试时2卷,32调需3各控要类试在管验最路;大习对限题设度到备内位进来。行确在调保管整机路使组敷其高设在中过正资程常料1工试中况卷,下安要与全加过,强度并看工且25作尽52下可22都能护可地1关以缩于正小管常故路工障高作高中;中资对资料于料试继试卷电卷连保破接护坏管进范口行围处整,理核或高对者中定对资值某料,些试审异卷核常弯与高扁校中度对资固图料定纸试盒,卷位编工置写况.复进保杂行护设自层备动防与处腐装理跨置,接高尤地中其线资要弯料避曲试免半卷错径调误标试高方中等案资,,料要编试求5写、卷技重电保术要气护交设设装底备备置。4高调、动管中试电作线资高气,敷料中课并设3试资件且、技卷料中拒管术试试调绝路中验卷试动敷包方技作设含案术,技线以来术槽及避、系免管统不架启必等动要多方高项案中方;资式对料,整试为套卷解启突决动然高过停中程机语中。文高因电中此气资,课料电件试力中卷高管电中壁气资薄设料、备试接进卷口行保不调护严试装等工置问作调题并试,且技合进术理行,利过要用关求管运电线行力敷高保设中护技资装术料置。试做线卷到缆技准敷术确设指灵原导活则。。:对对在于于分调差线试动盒过保处程护,中装当高置不中高同资中电料资压试料回卷试路技卷交术调叉问试时题技,,术应作是采为指用调发金试电属人机隔员一板,变进需压行要器隔在组开事在处前发理掌生;握内同图部一纸故线资障槽料时内、,设需强备要电制进回造行路厂外须家部同出电时具源切高高断中中习资资题料料电试试源卷卷,试切线验除缆报从敷告而设与采完相用毕关高,技中要术资进资料行料试检,卷查并主和且要检了保测解护处现装理场置。设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include<> #include<> voidmap1(); voidmap2(); voidmap3(); voidshow(); voidmove(); voidmain(intargc,char*argv[]) { time_ta,b; time(&a); system("color1E"); loop1: { system("cls");d秒\n\t\t\t",b-a); getch();d秒\n",q-p); printf("\t\t\t\t*******回车重新选择*******\n\t\t\t\t"); getch(); } else { time(&o); if(z=='d') { return; } if(o-p>30) { loop1: system("cls");d秒\n",q-p); printf("\t\t\t\t*******回车重新选择*******\n\t\t\t\t"); getch(); } else { time(&o); if(z=='d') { return; } if(o-p>30) { loop1: system("cls");d秒\n",q-p); printf("\t\t\t\t*******回车重新选择*******\n\t\t\t\t"); getch(); } else { time(&o); if(z=='d') { return; } if(o-p>30) { loop1: system("cls");if(*t=='d'){}//遇到d返回 if(*t==75)//左键 { if(c[*x][*y-1]=='#'||c[*x][*y-1]==5&&c[*x][*y-2]==5 ||c[*x][*y-1]==5&&c[*x][*y-2]=='!'){}//遇到墙或推两个箱子 else { if(c[*x][*y-1]=='!')//把箱子推出目的地 { if(c[*x][*y-2]!=0){} else { c[*x][*y]=0; *y-=1; c[*x][*y]=1; c[*x][*y-1]=5; } } else { if(c[*x][*y-1]==5&&c[*x][*y-2]!='#')//推箱子 { if(c[*x][*y]==c[X][Y]||c[*x][*y]==c[A][B] ||c[*x][*y]==c[N][M])//推着箱子离开目的地 { c[*x][*y]=3; *y-=1; c[*x][*y]=1; c[*x][*y-1]=5; } else { c[*x][*y]=0; *y-=1; c[*x][*y]=1; c[*x][*y-1]=5; } } else { if(c[*x][*y-1]==5&&c[*x][*y-2]=='#'){}//推不动箱子 else { if(c[*x][*y-1]==c[X][Y]||c[*x][*y-1]==c[A][B] ||c[*x][*y-1]==c[N][M])//进到目的地 { c[*x][*y]=0; *y-=1; c[*x][*y]=1; } else { if(c[*x][*y]==c[X][Y]||c[*x][*y]==c[A][B] ||c[*x][*y]==c[N][M])//离开目的地 { c[*x][*y]=3; *y-=1; c[*x][*y]=1; } else//走到空地 { c[*x][*y]=0; *y-=1; c[*x][*y]=1; } } } } } } if(c[X][Y]==5||c[A][B]==5||c[N][M]==5)//箱子推到目的地 { c[*x][*y-1]='!'; } } if(*t==77)//右键 { if(c[*x][*y+1]=='#'||c[*x][*y+1]==5&&c[*x][*y+2]==5 ||c[*x][*y+1]==5&&c[*x][*y+2]=='!'){}//遇到墙或推两个箱子 else { if(c[*x][*y+1]=='!')//把箱子推出目的地 { if(c[*x][*y+2]!=0){} else { c[*x][*y]=0; *y+=1; c[*x][*y]=1; c[*x][*y+1]=5; } } else { if(c[*x][*y+1]==5&&c[*x][*y+2]!='#')//推箱子 { if(c[*x][*y]==c[X][Y]||c[*x][*y]==c[A][B] ||c[*x][*y]==c[N][M])//推着箱子离开目的地 { c[*x][*y]=3; *y+=1; c[*x][*y]=1; c[*x][*y+1]=5; } else { c[*x][*y]=0; *y+=1; c[*x][*y]=1; c[*x][*y+1]=5; } } else { if(c[*x][*y+1]==5&&c[*x][*y+2]=='#'){}//推不动箱子 else { if(c[*x][*y+1]==c[X][Y]||c[*x][*y+1]==c[A][B] ||c[*x][*y+1]==c[N][M])//进到目的地 { c[*x][*y]=0; *y+=1; c[*x][*y]=1; } else { if(c[*x][*y]==c[X][Y]||c[*x][*y]==c[A][B] ||c[*x][*y]==c[N][M])//离开目的地 { c[*x][*y]=3; *y+=1; c[*x][*y]=1; } else//走到空地 { c[*x][*y]=0; *y+=1; c[*x][*y]=1; } } } } } } if(c[X][Y]==5||c[A][B]==5||c[N][M]==5)//箱子推到目的地 { c[*x][*y+1]='!'; } } if(*t==72)//上键 { if(c[*x-1][*y]=='#'||c[*x-1][*y]==5&&c[*x-2][*y]==5 ||c[*x-1][*y]==5&&c[*x-2][*y]=='!'){}//遇到墙或推两个箱子 else { if(c[*x-1][*y]=='!')//把箱子推出目的地 { if(c[*x-2][*y]!=0){} else { c[*x][*y]=0; *x-=1; c[*x][*y]=1; c[*x-1][*y]=5; } } else { if(c[*x-1][*y]==5&&c[*x-2][*y]!='#')//推箱子 { if(c[*x][*y]==c[X][Y]||c[*x][*y]==c[A][B] ||c[*x][*y]==c[N][M])//推着箱子离开目的地 { c[*x][*y]=3; *x-=1; c[*x][*y]=1; c[*x-1][*y]=5; } else { c[*x][*y]=0; *x-=1; c[*x][*y]=1; c[*x-1][*y]=5; } } else { if(c[*x-1][*y]==5&&c[*x-2][*y]=='#'){}//推不动箱子 else { if(c[*x-1][*y]==c[X][Y]||c[*x-1][*y]==c[A][B] ||c[*x-1][*y]==c[N][M])//进到目的地 { c[*x][*y]=0; *x-=1; c[*x][*y]=1; } else { if(c[*x][*y]==c[X][Y]||c[*x][*y]==c[A][B] ||c[*x][*y]==c[N][M])//离开目的地 { c[*x][*y]=3; *x-=1; c[*x][*y]=1; } else//走到空地 { c[*x][*y]=0; *x-=1; c[*x][*y]=1; } } } } } } if(c[X][Y]==5||c[A][B]==5||c[N][M]==5)//箱子推到目的地 { c[*x-1][*y]='!'; } } if(*t==80)//下键 { if(c[*x+1][*y]=='#'||c[*x+1][*y]==5&&c[*x+2][*y]==5 ||c[*x+1][*y]==5&&c[*x+2][*y]=='!'){}//遇到墙或推两个箱子 else { if(c[*x+1][*y]=='!')//把箱子推出目的地 { if(c[*x+2][*y]!=0){} else { c[*x][*y]=0; *x+=1; c[*x][*y]=1; c[*x+1][*y]=5; } } else { if(c[*x+1][*y]==5&&c[*x+2][*y]!='#')//推箱子 { if(c[*x][*y]==c[X][Y]||c[*x][*y]==c[A][B] ||c[*x][*y]==c[N][M])//推着箱子离开目的地 { c[*x][*y]=3; *x+=1; c[*x][*y]=1; c[*x+1][*y]=5; } else { c[*x][*y]=0; *x+=1; c[*x][*y]=1; c[*x+1][*y]=5; } }

相关文档
最新文档