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) { // ...
随机推荐
- Dev 日志 | 一次 Segmentation Fault 和 GCC Illegal Instruction 编译问题排查 NebulaGraph
摘要 笔者最近在重新整理和编译 Nebula Graph 的第三方依赖,选出两个比较有意思的问题给大家分享一下. Flex Segmentation Fault--Segmentation fault ...
- mysql 索引笔记
MyISAM引擎的B+Tree的索引 通过上图可以直接的看出, 在MyISAM对B+树的运用中明显的特点如下: 所有的非叶子节点中存储的全部是索引信息 在叶子节点中存储的 value值其实是 数据库中 ...
- PL真有意思(三):名字、作用域和约束
前言 这两篇写了词法分析和语法分析,比较偏向实践.这一篇来看一下语言设计里一个比较重要的部分:名字.在大部分语言里,名字就是标识符,如果从抽象层面来看名字就是对更低一级的内存之类的概念的一层抽象.但是 ...
- 新闻实时分析系统-Hadoop2.X HA架构与部署
1.HDFS-HA架构原理介绍 hadoop2.x之后,Clouera提出了QJM/Qurom Journal Manager,这是一个基于Paxos算法实现的HDFS HA方案,它给出了一种较好的解 ...
- 探索 IPv6 网络
目录 0x00 前言 0x01 探索 服务器配置 IPv6 地址 服务器部署网络代理 客户端配置网络代理 测试访问 IPv6 地址 给博客添加 IPv6 地址 0x00 前言 IPv4 地址枯竭的事情 ...
- kubernetes实战(二十九):Kubernetes RBAC实现不同用户在不同Namespace的不同权限
1.基本说明 在生产环境使用k8s以后,大部分应用都实现了高可用,不仅降低了维护成本,也简化了很多应用的部署成本,但是同时也带来了诸多问题.比如开发可能需要查看自己的应用状态.连接信息.日志.执行命令 ...
- Gitlab用户信息批量导出
前言 因运维体系中涉及到用户权限管理及统计,需将Gitlab用户数据提取出来并录入到公司内部自建的权限统计平台. 本文将对Gitlab的用户信息数据批量导出进行操作说明! 思路 A)要对数据进行批量的 ...
- “狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一.垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高. 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介 ...
- C++桌面计算机
#include<iostream> #include<string> #include<map> #include<cctype> using nam ...
- 处理器CPU天梯图,显卡天梯图(性能排名图)
自己网上找的几个图,仅供参考,买电脑可以看看了~