完整版本的推箱子小游戏,最简单的纯C语言打造
/*
推箱子小游戏
1.定义绘制样式
用二维数组的方式
2.绘制图像
3.找出当前位置
4.逻辑判断,制造动作
根据数学xy轴的规律,这里使用ij
上移,行轴上升,行数减少
下移,行数下降,函数增加
左移,列数向左,列数减少
右移,列数向右,列数增加
*/
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define ROWS 8 //行数
#define COLS 9 //列数 int i = ; //行轴
int j = ; //列轴 //定义绘制样式
/*
0 代表 空地
1 代表 墙壁
3 代表 目的地
4 代表 箱子
5 代表 推箱子的人
7 代表 目的地上的箱子
8 代表 目的地上的人
*/
int cMap[ROWS][COLS] = {
{ , , , , , , , , },
{ , , , , , , , , },
{ , , , , , , , , },
{ , , , , , , , , },
{ , , , , , , , , },
{ , , , , , , , , },
{ , , , , , , , , },
{ , , , , , , , , }
}; //绘制图像
int GreatMap()
{ for (int i = ; i < ROWS;i++)
{
for (int j = ; j < COLS; j++)
{
switch (cMap[i][j])
{
case :
printf(" ");
break;
case :
printf("■");
break;
case :
printf("△");
break;
case :
printf("◎");
break;
case :
printf("♀");
break;
case :
printf("●");
break;
case :
printf("♀");
break;
default:
break;
}
}
printf("\n");
} return ;
} //找出人的当前位置
int FindManIndex()
{
for (i = ; i < ROWS;i++)
{
for (j = ; j < COLS;j++)
{
if (cMap[i][j] == || cMap[i][j] == )
break;
}
if (cMap[i][j] == || cMap[i][j] == )
break;
}
printf("人的坐标:[%d,%d]",j,i); return ;
} //制造动作
int CreateActions()
{
char cAction = _getch(); //输入字符不用回车
switch (cAction)
{
case 'W':
case 'w':
//----------------------------------上移
//如果上方是空地或者目的地
if (cMap[i - ][j] == || cMap[i - ][j] == )
{
cMap[i - ][j] += ;
cMap[i][j] -= ;
}
//如果上方是箱子或者目的地上的箱子,同时更上方是空地或者目的地
if ((cMap[i - ][j] == || cMap[i - ][j] == ) &&
(cMap[i - ][j] == || cMap[i - ][j] == ))
{
cMap[i - ][j] += ; cMap[i - ][j] += ;
cMap[i][j] -= ;
} break;
case 'A':
case 'a':
//----------------------------------左移
//如果左方是空地或者目的地
if (cMap[i][j-] == || cMap[i][j-] == )
{
cMap[i][j-] += ;
cMap[i][j] -= ;
}
//如果左方是箱子或者目的地上的箱子,同时更左方是空地或者目的地
if ((cMap[i][j-] == || cMap[i ][j-] == ) &&
(cMap[i][j-] == || cMap[i ][j-] == ))
{
cMap[i][j-] += ;
cMap[i][j-] += ;
cMap[i][j] -= ;
}
break;
case 'S':
case 's':
//----------------------------------下移
//如果下方是空地或者目的地
if (cMap[i + ][j] == || cMap[i + ][j] == )
{
cMap[i + ][j] += ;
cMap[i][j] -= ;
}
//如果下方是箱子或者目的地上的箱子,同时更下方是空地或者目的地
if ((cMap[i + ][j] == || cMap[i + ][j] == ) &&
(cMap[i + ][j] == || cMap[i + ][j] == ))
{
cMap[i + ][j] += ;
cMap[i + ][j] += ;
cMap[i][j] -= ;
}
break;
case 'D':
case 'd':
//----------------------------------右移
//如果右方是空地或者目的地
if (cMap[i][j + ] == || cMap[i][j + ] == )
{
cMap[i][j + ] += ;
cMap[i][j] -= ;
}
//如果右方是箱子或者目的地上的箱子,同时更右方是空地或者目的地
if ((cMap[i][j + ] == || cMap[i][j + ] == ) &&
(cMap[i][j + ] == || cMap[i][j + ] == ))
{
cMap[i][j + ] += ;
cMap[i][j + ] += ;
cMap[i][j] -=;
}
break;
}
return ;
} int main()
{ while ()
{
GreatMap();
FindManIndex(); CreateActions();
system("cls");
} system("pause");
return ;
}
完整版本的推箱子小游戏,最简单的纯C语言打造的更多相关文章
- C++ 控制台推箱子小游戏
// 游戏菜单.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #in ...
- 推箱子小游戏《格鲁的实验室》13关 - bfs最短路径
下载了一款推箱子小游戏,第13关的时候怎么也破不了最佳纪录(最少步数是9而我们最好的方案是10步),因为数据比较小(6*8的方阵),所以写了个BFS来找最短路. 游戏的目标是把小黄人推到黄色球,小绿人 ...
- C/C++编程笔记:C语言写推箱子小游戏,大一学习C语言练手项目
C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游 ...
- 每个人都可以用C语言写的推箱子小游戏!今天你就可以写出属于自己项目~
C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游 ...
- 用C#制作推箱子小游戏
思路分析: 一.制作一个地图 二.地图中放置墙.箱子.人.目标等 三.让小人动起来完成推箱子动作 游戏制作: 1.按照上述地图制作一个地图 (12行×13列) 地图可以看做是行和列组成的,即可以看做 ...
- c++、c实现推箱子小游戏
经过四次的修改和优化,终于将推箱子这个游戏完整的写出来了,今天就像大家分享一下这个游戏的编写. 这个游戏界面的编写总的来说不困难,主要是推动箱子的算法. (1)利用数组和windows api 即可写 ...
- 【面试笔试算法】Program 5 : 推箱子 (网易游戏笔试题)
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 推箱子是一款经典游戏.如图所示,灰色格子代表不能通过区域,蓝色方格是箱子,黑色圆形代表玩家,含有圆点的格子代表目标点. 规 ...
- 经典数独游戏+数独求解器—纯C语言实现
"心常乐数独小游戏"(下面简称"本软件")是一款windows平台下的数独游戏软件. 本软件是开源.免费软件. 本软件使用纯C语言编写,MinGW编译,NSIS ...
- 《C++ Qt 设计模式》8|15拼图 小游戏的简单实现。拜托,别乱点!
第零章:介绍 看到这个游戏了,感觉蛮好玩的,实现了一下. 界面如下: 游戏玩法:在3×*3的矩阵中,每个按钮都可以点击,如果按钮四周有一个是空白,则点击此按钮则会移动到这个空白.按钮字母顺序变成“AB ...
随机推荐
- 熟悉activemq的初步试用
1.在服务器(阿里云ubuntu16.04)上安装activemq,我是直接下载activemq: wget http://archive.apache.org/dist/activemq/apa ...
- windows8.1全角与半角切换快捷键
windows8.1全角与半角切换快捷键: shift + 空格
- BufferedReader类里面mark(int readAheadLimit)中readAheadLimit到底代表什么
昨天用到了BufferedReader类里面mark(int readAheadLimit)方法,对于文档里面readAheadLimit的解释有些没弄懂,就翻开源码研究.具体的源码分析可以参见htt ...
- pythonのdjango Form简单应用。
Form表单有两种应用场景: 1.生成HTML标签. 2.验证输入内容. 如果我们在django程序中使用form时,需要在views中导入form模块 from django import form ...
- MySql8.0+全新身份验证方式
我们在安装MySql8.0+的版本时MySql将会询问我们是否选择全新的身份验证方式,如下图 ⒈第一个是MySql推荐我们使用的强密码加密模式来进行身份验证 MySql8支持基于SHA256改进的更强 ...
- TV TimeShift和PVR的区别
Timeshift是在PVR菜单下,PVR菜单下一般有两个功能一个是刻录功能,一个是Timeshift功能,这两个功能都需要u盘或者内存卡的支持,刻录时把当前的节目刻录进优盘想看的时候还可以打开看,T ...
- Matlab imshow, image, imagesc 三者详细分析
1.显示RGB图像 相同点:这三个函数都是把m*n*3的矩阵中的数值当做RGB值来显示的. 区别:imshow将图像以原始尺寸显示,image和imagesc则会对图像进行适当的缩放(显示出来的尺寸大 ...
- 以iphone作为热点时ios程序中的UDP广播地址
iPhone 开启热点后,会启用一个 172.20.10.0/28 的子网, 也就是最多15个ip地址,自己的地址是172.20.10.1, 广播地址是 172.20.10.15 ,不是传统的255. ...
- JDBC编程六部曲
今天初学jdbc,明白了大致的编程流程,在此总结一下: JDBC编程可以分为六步——六部曲: * 第一步:注册驱动. * 1.1 获取驱动对象 * 1.2 注册驱动 * 第二步:获取数据库连接 * 第 ...
- VUE项目快速构建
IDE :VScode 1.新建项目文件夹 ctrl+~ 调出命令板,/IDE找到当前文件夹右键 点击‘在命令提示符中打开’ 安装 node:官网(https://nodejs.org/en/d ...