C语言版推箱子
推箱子源代码初步:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define boolean int
#define true 1
#define false 0 #define ROWS 10
//之所以定义为11,是因为字符串的尾部的\0
#define COLUMNS 11 //根据程序定义或者文件读入来构建地图,然后把他绘制到屏幕上
void DrawMap(char map[][COLUMNS]);
void SwapXY(char map[][COLUMNS], int *x1, int *y1, int *x2, int *y2);
boolean IsLose(char map[][COLUMNS], int boxPositionX, int boxPositionY, char condition);
//读取文件中的地图和人物、箱子的位置
void LoadMap(char Map[][COLUMNS], int *boxPositionX, int *boxPositionY, int *manPositionX, int *manPositionY);
//在推箱子的过程中接收用户的输入,然后做出相应的处理
void PushBox(int *boxPositionX, int *boxPositionY, int *manPositionX, int *manPositionY); int main()
{
char wall = '#';
char box = 'X';
char street = ' ';
int boxPositionX,boxPositionY;
int manPositionX,manPositionY; //定义地图的出口,也就是箱子到达此处就赢了
int winPositionX = ROWS -;
int winPositionY = COLUMNS - ; boolean IsWin = false; //int manNextPositionX,manNextPositionY; char Map[ROWS][COLUMNS] =
{
"##########",
"#0 #### #",
"# X#### #",
"# #",
"###### #",
"# #### #",
"# #",
"# ######",
"# ",
"##########"
};
DrawMap(Map);
LoadMap(Map, &boxPositionX, &boxPositionY, &manPositionX, &manPositionY); while(!IsWin)
{
int boxNextPositionX = boxPositionX;
int boxNextPositionY = boxPositionY;
int manNextPositionX = manPositionX;
int manNextPositionY = manPositionY;
//获取用户的输入
PushBox(&boxNextPositionX, &boxNextPositionY, &manNextPositionX, &manNextPositionY);
//
system("CLS"); //这里处理走之后的效果 TODO:
if(Map[boxNextPositionX][boxNextPositionY] == street && Map[manNextPositionX][manNextPositionY] == box)
{
SwapXY(Map,&boxPositionX, &boxPositionY, &boxNextPositionX, &boxNextPositionY);
SwapXY(Map,&manPositionX, &manPositionY, &manNextPositionX, &manNextPositionY); }
if(Map[manNextPositionX][manNextPositionY] == street)
{
SwapXY(Map,&manPositionX, &manPositionY, &manNextPositionX, &manNextPositionY); } DrawMap(Map); if(boxPositionX == winPositionX && boxPositionY == winPositionY)
{
printf("You Are Win!\n");
IsWin = true; }
if(IsLose(Map,boxPositionX, boxPositionY, wall))
{
printf("You Are Lose!\n");
break;
}
}
system("Pause");
return ; } void DrawMap(char map[][COLUMNS])
{
for(int i = ; i < ROWS; i++)
{
printf("%s\n", map[i]);
}
}
void SwapXY(char map[][COLUMNS], int *x1, int *y1, int *x2, int *y2)
{
char temp = map[*x1][*y1];
map[*x1][*y1] = map[*x2][*y2];
map[*x2][*y2] = temp; *x1 = *x2;
*y1 = *y2;
}
boolean IsLose(char map[][COLUMNS], int boxPositionX, int boxPositionY, char condition)
{
if((map[boxPositionX + ][boxPositionY] == condition && map[boxPositionX][boxPositionY - ] == condition)
||(map[boxPositionX - ][boxPositionY] == condition && map[boxPositionX][boxPositionY - ] == condition)
||(map[boxPositionX - ][boxPositionY] == condition && map[boxPositionX][boxPositionY + ] == condition)
||(map[boxPositionX + ][boxPositionY] == condition && map[boxPositionX][boxPositionY + ] == condition)
)
{
return true;
}
return false;
}
void LoadMap(char Map[][COLUMNS], int *boxPositionX, int *boxPositionY, int *manPositionX, int *manPositionY)
{
*boxPositionX = ;
*boxPositionY = ;
*manPositionX = ;
*manPositionY = ;
}
void PushBox(int *boxPositionX, int *boxPositionY, int *manPositionX, int *manPositionY)
{
char direction;
printf("请输入一个方向 [w,a,s,d]分别代表[上下左右]\n\n");
direction = getch();
switch(direction)
{
case 'W':
case 'w':
(*manPositionX)--;
(*boxPositionX)--;
break;
case 'A':
case 'a':
(*manPositionY)--;
(*boxPositionY)--;
break;
case 'S':
case 's':
(*manPositionX)++;
(*boxPositionX)++;
break;
case 'D':
case 'd':
(*manPositionY)++;
(*boxPositionY)++;
break;
default:
break;
//DO NOTHING:
}
}
C语言版推箱子的更多相关文章
- C语言实现推箱子游戏完整代码
C语言实现推箱子游戏完整代码 前言 自己做的,可能有些代码不够工整,或者有些小问题,但游戏的基本操作是可以实现的 代码效果 代码一共分为8个部分,4个控制上下左右移动,2个判断输赢,1个统计归为的个数 ...
- C语言之推箱子游戏代码
前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:Yan_Less 正文 新手注意:如果你学习遇到问题找不到人解答,可以点 ...
- C/C++编程笔记:C语言写推箱子小游戏,大一学习C语言练手项目
C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游 ...
- c语言游戏推箱子
前两天做了推箱子小游戏,看似简单的一个小游戏背后却 有巨大的秘密,这秘密就是一大堆逻辑. 自从学习了函数过后,的确是解决了很多问题,而且调用很方便,尽管我现在都不是很会调用. 写完一个函数,准备测试一 ...
- jQuery版推箱子游戏详解和源码
前言 偶然间看到很多用js写游戏的感觉很炫酷的样子,所以就想试试,就看了一些资料和某前端站点的视屏.于是乎就自己动手实践了一下,上推箱子截图 感觉很丑陋,但是功能是实现了.再说貌似大多都是这样的吧,这 ...
- Java控制台版推箱子
import java.util.Scanner; public class b { public static void main(String[] args) { Scanner input = ...
- C#语言实现推箱子
话不多说直接上代码 using System; namespace Boxer { class Program { const int WIDTH = 8; const int HEIGHT = 8; ...
- C语言小程序——推箱子(窄字符和宽字符)
C语言小程序——推箱子(窄字符Version) 推箱子.c #include <stdio.h> #include <conio.h> #include <stdlib. ...
- 012-C语言小游戏之推箱子
012-C语言小游戏之推箱子 一.创建游戏地图 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #define ROWS 11 #define COLS 12 char ...
随机推荐
- 3-07. 求前缀表达式的值(25) (ZJU_PAT数学)
题目链接:http://pat.zju.edu.cn/contests/ds/3-07 算术表达式有前缀表示法.中缀表示法和后缀表示法等形式.前缀表达式指二元运算符位于两个运算数之前,比如2+3*(7 ...
- 一个loader加载多个swf
var _swfLoader:Loader; var _swfRequest:URLRequest; var _swfPathArr:Array = new Array("00.swf&qu ...
- 【贪心+背包】【HDU2546】【饭卡】
饭卡 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- RDLC报表系列(六) 多图表-折线图和柱状图
美好的一天开始了,这篇是RDLC系列的最后一篇文章,我的小项目也已经release,正在测试中. 1.新建demo3.aspx和demo3.rdlc文件 2.往rdlc文件中拖一个图标控件,在弹出的窗 ...
- APP安全测评checklist
leader不要打我啊,我要借用一下我组app的安全测评检查方案,这些最基本的安全防范措施应该是每个app都要注意的吧: 对了,首先,你的app得先混淆啊~:AndroidStudio 混淆打包 先来 ...
- Java中两种实现多线程方式的对比分析
本文转载自:http://www.linuxidc.com/Linux/2013-12/93690.htm#0-tsina-1-14812-397232819ff9a47a7b7e80a40613cf ...
- BZOJ 4011: [HNOI2015]落忆枫音( dp )
DAG上有个环, 先按DAG计数(所有节点入度的乘积), 然后再减去按拓扑序dp求出的不合法方案数(形成环的方案数). ---------------------------------------- ...
- ubuntu 12.04 安装谷歌浏览器
http://hi.baidu.com/kevin276/item/29bc1c96a208fabc82d29542 sudo dpkg -i google-chrome-stable_current ...
- ubuntu mysql编码设置5.5以后
安装了mysql. 版本:5.5.28 操作系统 :ubuntu 12.10 mysql> show variables like 'character%'; +---------------- ...
- 网页设计之PS画渐变线条
第一种线条的画法:画两条直线,这两条直线是 以背景色为基础 , 一个比背景色深 ,一个比背景色浅``. 第二种线条的画法:第一种画法是 图层样式 渐变叠加 叠加一个 背景色 到中间色 再到背景 ...