C语言之推箱子游戏代码
前言
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
作者:Yan_Less
正文
新手注意:如果你学习遇到问题找不到人解答,可以点我进裙里面大佬解答及最新C语言教.程!
每天学习一点点,每天容易一点点。一个简单的C语言程序,用来复习c语言,代码通俗易懂。有什么问题望各位不吝赐教。
/*******************************************
用最简单的C语言语句写个推箱子的程序。
********************************************/
#include <stdio.h>
#include <conio.h>
#include<stdlib.h>
int map[9][11] = {
{0,1,1,1,1,1,1,1,1,1,0}, //0代表空地
{0,1,0,0,0,1,0,0,0,1,0}, //1代表墙
{0,1,0,4,4,4,4,4,0,1,0}, //3代表目的地
{0,1,0,4,0,4,0,4,0,1,1}, //4代表箱子
{0,1,0,0,0,0,0,0,4,0,1}, //5代表人
{1,1,0,1,1,1,1,0,4,0,1},
{1,0,8,3,3,3,3,1,0,0,1}, //2 3 4 5 6 7 8 9 1 0
{1,0,3,3,3,3,3,0,0,1,1},
{1,1,1,1,1,1,1,1,1,1,0} };
//绘制地图 //二维数组+switch()
void DrawMap()
{
//遍历二维数组 //0 打印空格 //1 墙 //3 目的地 //什么结构?
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 11; j++)
{
//if else switch
switch (map[i][j])
{
case 0:
printf(" ");
break;
case 1:
printf("■");
break;
case 3:
printf("☆");
break;
case 4:
printf("□");
break;
case 5:
printf("♀"); //5人
break;
case 7: //4 + 3 箱子在目的地中
printf("★");
break;
case 8: // 5 + 3 人在目的地当中 人?
printf("♀");
break;
}
}
printf("\n");
}
}
void PlayGame()
{
int r, c; //人的下标 //
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 11; j++)
{
if (map[i][j] == 5||map[i][j]==8) //i j 人的下标?
{
r = i;
c = j;
}
}
}
char ch; //字符变量
ch = getch(); //键盘的输入保存到字符中
// getch() getchar() 接收键盘字符
// getch()直接接收 不显示回文 getchar()显示回文可以修改 enter键结束
//根据不同的按键 改变不同的值. 分支.
switch (ch)
{
case 'W': //W A S D方向 72 80 75 77 虚拟键值 ascii windowVK_UP VK_TAB VK_RETUNE
case 'w':
case 72:
if (map[r - 1][c] == 0|| map[r - 1][c] == 3)
{
map[r - 1][c] += 5;
map[r][c] -= 5;
}
else if (map[r - 1][c] == 4 || map[r - 1][c] == 7)
{
if (map[r - 2][c] == 0 || map[r - 2][c] == 3)
{
map[r - 2][c] += 4;
map[r - 1][c] += 1;
map[r][c] -= 5;
}
}
break;
case 'S': //enter按键的作用 确认 返回
case 's':
case 80:
if (map[r + 1][c] == 0 || map[r + 1][c] == 3)
{
map[r + 1][c] += 5;
map[r][c] -= 5;
}
else if (map[r + 1][c] == 4 || map[r+ 1][c] == 7)
{
if (map[r + 2][c] == 0 || map[r + 2][c] == 3)
{
map[r + 2][c] += 4;
map[r + 1][c] += 1;
map[r][c] -= 5;
}
}
break;
case 'A':
case 'a':
case 75:
if (map[r ][c - 1] == 0 || map[r ][c - 1] == 3)
{
map[r ][c - 1] += 5;
map[r][c] -= 5;
}
else if (map[r][c - 1] == 4 || map[r][c - 1] == 7)
{
if (map[r ][c - 2] == 0 || map[r ][c - 2] == 3)
{
map[r ][c - 2] += 4;
map[r ][c - 1] += 1;
map[r][c] -= 5;
}
}
break;
case 'D':
case 'd':
case 77:
if (map[r][c + 1] == 0 || map[r][c + 1] == 3)
{
map[r][c + 1] += 5;
map[r][c] -= 5;
}
else if (map[r][c + 1] == 4 || map[r][c + 1] == 7)
{
if (map[r][c + 2] == 0 || map[r][c + 2] == 3)
{
map[r][c + 2] += 4;
map[r][c + 1] += 1;
map[r][c] -= 5;
}
}
break;
}
}
//
int main() //主函数
{
while (1)
{
system("cls");
DrawMap();
PlayGame();
}
return 0;
}
//通过按键来实现游戏 ---> 通过按键来改变二维数组的排列顺序.
//思考一个问题? 地图是二维数组来决定的. 人在哪里 二维数组来决定?
新手注意:如果你学习遇到问题找不到人解答,可以点我进裙里面大佬解答及最新C语言教.程!
/************************************************
//人推箱子
可以动. 怎么办. 改变元素
1.人的前面是空地
2.人的前面是目的地
3.人的前面是箱子
3.1 箱子的前面是空地
3.2 箱子的前面是目的地
//盘断二维数组中有几个7
//没有目的地 不对.. 人站在目的地
//有没有4.
****************************************
C语言之推箱子游戏代码的更多相关文章
- C语言实现推箱子游戏完整代码
C语言实现推箱子游戏完整代码 前言 自己做的,可能有些代码不够工整,或者有些小问题,但游戏的基本操作是可以实现的 代码效果 代码一共分为8个部分,4个控制上下左右移动,2个判断输赢,1个统计归为的个数 ...
- C/C++编程笔记:C语言写推箱子小游戏,大一学习C语言练手项目
C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游 ...
- 用C写一个简单的推箱子游戏(一)
我现在在读大二,我们有一门课程叫<操作系统>,课程考查要求我们可以写一段程序或者写Windows.iOS.Mac的发展历程.后面我结合网上的资料参考,就想用自己之前简单学过的C写一关的推箱 ...
- JavaScript写一个小乌龟推箱子游戏
推箱子游戏是老游戏了, 网上有各种各样的版本, 说下推箱子游戏的简单实现,以及我找到的一些参考视频和实例: 推箱子游戏的在线DEMO : 打开 如下是效果图: 这个拖箱子游戏做了移动端的适配, 我使用 ...
- 用HTML5+原生js实现的推箱子游戏
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- JavaScript 推箱子游戏
推箱子游戏的 逻辑非常简单,但是如果不动手的话,还是不太清楚.我在这里讲一下自己的思路. 制作推箱子,首先要有自己的设计素材.如下我也是网上找的素材 第二步,理清游戏的规则. 游戏规则: 1.小人将箱 ...
- three.js 制作一个三维的推箱子游戏
今天郭先生发现大家更喜欢看我发的three.js小作品,今天我就发一个3d版本推箱子的游戏,其实webGL有很多框架,three.js并不合适做游戏引擎,但是可以尝试一些小游戏.在线案例请点击博客原文 ...
- 用C写一个简单的推箱子游戏(二)
下面接着上一篇随笔<用C写一个简单的推箱子游戏(一)>来写 tuidong()函数是用来判断游戏人物前方情况的函数,是推箱子游戏中非常重要的一个函数,下面从它开始继续介绍推箱子的小程序怎么 ...
- C# 推箱子游戏&对战游戏
推箱子游戏提纲,只有向右向上的操作,向左向下同理,后期需完善. namespace 推箱子 { class Program { static void Main(string[] args) { // ...
随机推荐
- C++中对C的扩展学习新增内容———面向对象(封装)
面向对象(封装) 1.对封装的理解: 1.封装就是把变量和函数放在一起统一表示某一个食物. class 2.给类内部的成员增加访问控制权限. 3.封装的语法就是class定义一个类. 2.给对象成员增 ...
- 全网阅读过20k的Java集合框架常见面试题总结!
本文为 SnailClimb 的原创,目前已经收录自我开源的 JavaGuide 中(61.5 k Star![Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识.欢迎 Sta ...
- nyoj 69-数的长度 (log10(),计算数的位数)
69-数的长度 内存限制:64MB 时间限制:3000ms 特判: No 通过数:10 提交数:13 难度:1 题目描述: N!阶乘是一个非常大的数,大家都知道计算公式是N!=N*(N-1)····· ...
- (三)初识NumPy(数据CSV文件存取和多维数据的存取)
本章主要介绍的是数据的CSV文件存取和多维数据的存取. 一.数据的CSV文件存取 1.CSV的写文件: np.savetxt(frame, array, fmt='%.18e', delimiter= ...
- 领扣(LeetCode)二叉树的所有路径 个人题解
给定一个二叉树,返回所有从根节点到叶子节点的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 输入: 1 / \ 2 3 \ 5 输出: ["1->2->5", ...
- expect 自动填充密码
它的脚本以#!/usr/bin/expect开头,执行时用expoct,而不是bash.我的一个给samba自动创建用户并且自动填写默认密码的脚本如下: vim smb_passwd.exp #!/u ...
- 宋宝华: Linux内核编程广泛使用的前向声明(Forward Declaration)
本文系转载,著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作者:宋宝华 来源: 微信公众号linux阅码场(id: linuxdev) 前向声明 编程定律 先强调一点:在一切可 ...
- 【Linux系列】Centos 7部署Laravel项目(七)
目的 本文主要介绍以下五点: 一. Composer安装 二. SSH设置 三. Git安装 四. Laravel部署 五. 上传GitHub 演示 一. Composer安装 # cd /usr/l ...
- MySQL常用的查询语句回顾
让你快速复习语句的笔记宝典. create table users( username varchar(20) primary key, userpwd varchar(20) ) alt ...
- 【故障公告】数据库服务器 CPU 近 100% 引发的故障
抱歉,今天上午 10:48 ~ 10:33 期间,我们所使用的数据库服务(阿里云 RDS 实例 SQL Server 2016 标准版)又出现了 CPU 近 100% 问题,由此给您带来麻烦,请您谅解 ...