C++ 控制台推箱子小游戏
// 游戏菜单.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include<iostream>
#include"windows.h"
#define KEY_DOWN(vk_code) (GetAsyncKeyState(vk_code)&0x8000?1:0) using namespace std; sDATA g_Player; sDATA g_Box[]; int _tmain(int argc, _TCHAR* argv[])
{
int nKeyState = ;
bool bBox = false;
int nBoxWin = ; //初始化人物
g_Player.X = ;
g_Player.Y = ;
g_Player.XOD = ;
g_Player.YOD = ;
//初始化箱子
for (int m = ; m < ; m++)
{
g_Box[m].X = m + ;
g_Box[m].Y = m + ;
g_Box[m].XOD = m + ;
g_Box[m].YOD = m + ;
} //键盘输入
while (true)
{
system("CLS"); if (nKeyState < )
{
if (KEY_DOWN(VK_DOWN))
{
nKeyState = abs(++nKeyState % );
}
else if (KEY_DOWN(VK_UP))
{
--nKeyState;
if (nKeyState < )
{
nKeyState = ;
}
}
if (KEY_DOWN(VK_RETURN))
{
if (nKeyState == n_Menu_PlayGame)
{
nKeyState = n_GO_PlayGame;
}
}
} //备份箱子坐标
for (int m = ; m < ; m++)
{
g_Box[m].XOD = g_Box[m].X;
g_Box[m].YOD = g_Box[m].Y;
}
//推箱子
for (int m = ; m < ; m++)
{
if (g_Player.X == g_Box[m].X && g_Player.Y == g_Box[m].Y)
{
g_Box[m].X += (g_Player.X - g_Player.XOD);
g_Box[m].Y += (g_Player.Y - g_Player.YOD);
}
}
//判断箱子是否撞墙
for (int m = ; m < ; m++)
{
if (nGameFrame[g_Box[m].X][g_Box[m].Y] == )
{
g_Box[m].X = g_Box[m].XOD;
g_Box[m].Y = g_Box[m].YOD;
g_Player.X = g_Player.XOD;
g_Player.Y = g_Player.YOD;
}
}
//判断箱子是否撞箱子
for (int m = ; m < ; m++)
{
for (int j = ; j < ; j++)
{
if (m != j&&g_Box[m].X == g_Box[j].X&&g_Box[m].Y == g_Box[j].Y)
{
g_Box[m].X = g_Box[m].XOD;
g_Box[m].Y = g_Box[m].YOD;
g_Player.X = g_Player.XOD;
g_Player.Y = g_Player.YOD;
}
}
} //判断胜利
for (; nBoxWin < ; nBoxWin++)
{
if (nGameFrame[g_Box[nBoxWin].X][g_Box[nBoxWin].Y] != )
{
break;
}
}
if (nBoxWin >= )
{
nKeyState = n_Go_Win;
} // 渲染
if (nKeyState < )
{
cout << "■■■■■■■■■■■■" << endl;
cout << "■■■■■■■■■■■■" << endl;
if (nKeyState == n_Menu_PlayGame)
{
cout << "■■ >-开始游戏 ■■" << endl;
cout << "■■ 游戏设置 ■■" << endl;
cout << "■■ 结束游戏 ■■" << endl; }
else if (nKeyState == n_Menu_GameSet)
{
cout << "■■ 开始游戏 ■■" << endl;
cout << "■■ >-游戏设置 ■■" << endl;
cout << "■■ 结束游戏 ■■" << endl;
}
else if (nKeyState == n_Menu_EndGame)
{
cout << "■■ 开始游戏 ■■" << endl;
cout << "■■ 游戏设置 ■■" << endl;
cout << "■■ >-结束游戏 ■■" << endl;
}
cout << "■■■■■■■■■■■■" << endl;
cout << "■■■■■■■■■■■■" << endl;
}
else if (nKeyState == n_GO_PlayGame)
{
for (int i = ; i < ; i++)
{
for (int a = ; a < ; a++)
{
for (int m = ; m < ; m++)
{
if (i==g_Box[m].X&&a==g_Box[m].Y)
{
bBox = true;
break;
}
else
{
bBox = false;
} }
if (nGameFrame[i][a] == )
{
cout << "■";
}
else if (i==g_Player.X&&a==g_Player.Y)
{
cout << "♀";
}
else if (bBox == true)
{
cout << "¤";
}
else if (nGameFrame[i][a] == )
{
cout << "×";
}
else
{
cout << " ";
}
}
cout << endl;
}
}
else if (nKeyState == n_Go_Win)
{
cout << "胜利!" << endl;
} //人物移动
g_Player.XOD = g_Player.X;
g_Player.YOD = g_Player.Y;
if (KEY_DOWN(VK_UP))
{
g_Player.X--;
}
else if (KEY_DOWN(VK_DOWN))
{
g_Player.X++;
}
else if (KEY_DOWN(VK_LEFT))
{
g_Player.Y--;
}
else if (KEY_DOWN(VK_RIGHT))
{
g_Player.Y++;
} if (nGameFrame[g_Player.X][g_Player.Y] == )
{
g_Player.X = g_Player.XOD;
g_Player.Y = g_Player.YOD;
} } return ;
}
控制台推箱子小游戏
C++ 控制台推箱子小游戏的更多相关文章
- C/C++编程笔记:C语言写推箱子小游戏,大一学习C语言练手项目
C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游 ...
- 每个人都可以用C语言写的推箱子小游戏!今天你就可以写出属于自己项目~
C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游 ...
- 完整版本的推箱子小游戏,最简单的纯C语言打造
/* 推箱子小游戏 1.定义绘制样式 用二维数组的方式 2.绘制图像 3.找出当前位置 4.逻辑判断,制造动作 根据数学xy轴的规律,这里使用ij 上移,行轴上升,行数减少 下移,行数下降,函数增加 ...
- 推箱子小游戏《格鲁的实验室》13关 - bfs最短路径
下载了一款推箱子小游戏,第13关的时候怎么也破不了最佳纪录(最少步数是9而我们最好的方案是10步),因为数据比较小(6*8的方阵),所以写了个BFS来找最短路. 游戏的目标是把小黄人推到黄色球,小绿人 ...
- 用C#制作推箱子小游戏
思路分析: 一.制作一个地图 二.地图中放置墙.箱子.人.目标等 三.让小人动起来完成推箱子动作 游戏制作: 1.按照上述地图制作一个地图 (12行×13列) 地图可以看做是行和列组成的,即可以看做 ...
- c++、c实现推箱子小游戏
经过四次的修改和优化,终于将推箱子这个游戏完整的写出来了,今天就像大家分享一下这个游戏的编写. 这个游戏界面的编写总的来说不困难,主要是推动箱子的算法. (1)利用数组和windows api 即可写 ...
- C++ 简单的控制台贪吃蛇小游戏
由于比较懒,所以不怎么写,觉得这样不应该.我应该对自己学的做出整理,不管是高端低端,写出来是自己的. // 贪吃蛇.cpp : 定义控制台应用程序的入口点. // #include "std ...
- 【面试笔试算法】Program 5 : 推箱子 (网易游戏笔试题)
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 推箱子是一款经典游戏.如图所示,灰色格子代表不能通过区域,蓝色方格是箱子,黑色圆形代表玩家,含有圆点的格子代表目标点. 规 ...
- c#撸的控制台版2048小游戏
1.分析 最近心血来潮,突然想写一个2048小游戏.于是搜索了一个在线2048玩玩,熟悉熟悉规则. 只谈核心规则:(以左移为例) 1.1合并 以行为单位,忽略0位,每列依次向左进行合并,且每列只能合并 ...
随机推荐
- echarts 修改y轴刻度间隔问题
其中min.max可以自定义可以动态获取数据 yAxis : [ { type : 'value', axi ...
- LFYZ-OJ ID: 1020 过河卒(NOIP2002)
过河卒 Proble Description 如图,A 点有一个过河卒,需要走到目标 B 点.卒行走规则:可以向下.或者向右.同时在棋盘上的任一点有一个对方的马(如上图的C点),该马所在的点和所有跳跃 ...
- DQL用户、权限管理(mysql8.0)
DQL用户.权限管理(mysql8.0) 查看所有的用户: use mysql; -- 使用mysql数据库 select * from user; -- 查询user表中的全部信息,也就是用户 创建 ...
- DUMP102 企业级电商FE
101 完成 webpack 配置后,有一套类似 live-reload 自动刷新提供 REPL 环境. [配置 webpack.config.js 别名,方便 js 文件做require 支持路径别 ...
- sqlserver 获取所有表的字段类型等信息
USE [MultipleAnalysisDataFY] GO /****** Object: View [dbo].[selectfieldtype] Script Date: 2018/11/7 ...
- 【归纳】正则表达式及Python中的正则库
正则表达式 正则表达式30分钟入门教程 runoob正则式教程 正则表达式练习题集(附答案) 元字符\b代表单词的分界处,在英文中指空格,标点符号或换行 例子:\bhi\b可以用来匹配hi这个单词,且 ...
- 老师博客copy -高阶函数2
新闻 管理 Py西游攻关之函数 一 函数是什么? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,具体区别,我们后面会讲,编程中的函数在英文中也有很多不同的叫法.在B ...
- 【easy】202. Happy Number
happy number Write an algorithm to determine if a number is "happy". A happy number is a n ...
- Git常用的操作
1.git使用的常规操作 git pull——>编辑——>git add——>git commit——>git push 用git add把文件添加进去,实际上就是把文 ...
- 今天聊一聊Java引用类型的强制类型转换
实际上基本类型也是存在强制类型转换的,这里简单提一下.概括来讲分为两种: 1.自动类型转换,也叫隐式类型转换,即数据范围小的转换为数据范围大的,此时编译器自动完成类型转换,无需我们写代码 2.强制类型 ...