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 ...
随机推荐
- jQuery Custom Selector JQuery自定义选择器
什么是JQuery的选择器呢,详见JQuery中的Selector: http://docs.jquery.com/Selectors 比如 $("div:contains('John')& ...
- 线上应用故障排查之一:高CPU占用
一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环. (友情提示:本博文章欢迎转载,但请注明出处:hankchen,http://www.blogjava.net/hank ...
- C#软件winform程序安装包制作及卸载程序制作
使用vs2010 winform程序开发的软件的人比较多,程序的开发是为了在不同的人不同的机器使用,为了使不同的机器能使用该软件就需要在制作程序安装包,安装包里必须包含该软件运行所选的所有环境,下面就 ...
- WisDom .net 工作流设计流程
1.简单说明 工作流( Foundare WorkFlow)说白了就是工作流程的一些计算机模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计 ...
- C#编程打字指法练习
很惊讶昨晚写的第一篇学习笔记竟然有个评论了,只是今天还是对基础知识提不起精神,还是先看那三本书了解一下程序开发的大概流程吧. 今天不知道怎么闲逛就找到了这个网站,说是专门用于编程练习的,用google ...
- DSOframer 无法正常加载的解决方案
不了解 DSOframer 的朋友,可以先参考文章 DSOframer 的简单介绍和资源整理. 在使用 DSOframer 时,经常会碰到各种奇奇怪怪的问题,最常见的就是控件不能正常加载.大家可以按下 ...
- HTML——CSS样式表&布局页面
CSS样式表: 一.作用:美化网页,页面布局. 二.分类: 内联,写在body里标签style=""里面的样式,优点是控制精确,可重用性差. 内嵌,嵌在网页的head里面,可重用性 ...
- win server 2003 将MBR转为GPT突破硬盘2TB的限制(附微软磁盘科普)
备注:https://technet.microsoft.com/zh-cn/library/cc773223.aspx GUID 分区表 与支持最大卷为 2 TB (terabytes) 并且每个磁 ...
- yii2 安装过程中的问题及解决方法
一.php版本要求5.4+,如果使用wamp组合包,建议更换 二.各种模块的支持,一般只要修改php.ini文件,去掉相应模块前的注释即可. 注意,Intl extension模块的支持需要将 ...
- Google机器学习教程心得(一)
Hello world Google Machine Learning Recipes 1 官方中文博客 http://chinagdg.org/2016/03/machine-learning-re ...