用 Dev-C++ 编写简单的推箱子小游戏
用 Dev-C++ 编写简单的推箱子小游戏
- 前言
- 基础版
- 优化版
前言
以下是显示效果
B站视频讲解:【小游戏】用 Dev-C++ 编写简单的控制台推箱子小游戏
【小游戏】用 Dev-C++ 编写简单的控制台推箱子小游戏
基础版
我们用 #
代表墙
用 空格 代表空地
用 S
代表玩家
用 O
代表箱子
用 *
代表目标位置
地图存储:a[x][y]
以下是代码:
#include <cstdio>
#include <windows.h>
#include <conio.h>
//7*10
char a[20][20]={"##########","## ###","##O### #","# S O O #","# **# O ##","##**# ##","##########"};void Hide()
{HANDLE hOut;CONSOLE_CURSOR_INFO curInfo;hOut=GetStdHandle(STD_OUTPUT_HANDLE); curInfo.dwSize=1;curInfo.bVisible=0;SetConsoleCursorInfo(hOut,&curInfo);
}void Welcome()
{printf("\n\n 推 箱 子");printf("\n\n 请按任意键开始");getch();system("cls");
}void Set()
{HANDLE hOut;COORD pos={0,0};hOut=GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorPosition(hOut,pos);
}int main()
{Hide();Welcome();int x=3,y=2;char ch;int cnt=0;for(int i=0;i<=6;i++)puts(a[i]);while(1){ch=getch();if(ch=='s'){if(a[x+1][y]==' '){a[x][y]=' ';x++;a[x][y]='S';}else if(a[x+1][y]=='O'){if(a[x+2][y]==' '){a[x][y]=' ';x++;a[x][y]='S';a[x+1][y]='O';}else if(a[x+2][y]=='*'){a[x][y]=' ';x++;a[x][y]='S';a[x+1][y]=' ';cnt++;}}}else if(ch=='w'){if(a[x-1][y]==' '){a[x][y]=' ';x--;a[x][y]='S';}else if(a[x-1][y]=='O'){if(a[x-2][y]==' '){a[x][y]=' ';x--;a[x][y]='S';a[x-1][y]='O';}else if(a[x-2][y]=='*'){a[x][y]=' ';x--;a[x][y]='S';a[x-1][y]=' ';cnt++;}}}else if(ch=='a'){if(a[x][y-1]==' '){a[x][y]=' ';y--;a[x][y]='S';}else if(a[x][y-1]=='O'){if(a[x][y-2]==' '){a[x][y]=' ';y--;a[x][y]='S';a[x][y-1]='O';}else if(a[x-2][y]=='*'){a[x][y]=' ';y--;a[x][y]='S';a[y-1][y]=' ';cnt++;}}}else if(ch=='d'){if(a[x][y+1]==' '){a[x][y]=' ';y++;a[x][y]='S';}else if(a[x][y+1]=='O'){if(a[x][y+2]==' '){a[x][y]=' ';y++;a[x][y]='S';a[x][y+1]='O';}else if(a[x][y+2]=='*'){a[x][y]=' ';y++;a[x][y]='S';a[x][y+1]=' ';cnt++;}}}Set();for(int i=0;i<=6;i++)puts(a[i]);if(cnt==4)break;}printf("你赢了!");Sleep(10000);return 0;
}
优化版
设置控制台文字和背景的颜色
system("color 0f");
设置默认的控制台前景和背景颜色。COLOR [attr]attr 指定控制台输出的颜色属性。颜色属性由两个十六进制数字指定 -- 第一个
对应于背景,第二个对应于前景。每个数字
可以为以下任何值:0 = 黑色 8 = 灰色1 = 蓝色 9 = 淡蓝色2 = 绿色 A = 淡绿色3 = 浅绿色 B = 淡浅绿色4 = 红色 C = 淡红色5 = 紫色 D = 淡紫色6 = 黄色 E = 淡黄色7 = 白色 F = 亮白色如果没有给定任何参数,此命令会将颜色还原到 CMD.EXE 启动时
的颜色。这个值来自当前控制台
窗口、/T 命令行开关或 DefaultColor 注册表
值。如果尝试使用相同的
前景和背景颜色来执行COLOR 命令,COLOR 命令会将 ERRORLEVEL 设置为 1。示例: "COLOR fc" 在亮白色上产生淡红色
以下有些函数的使用方法可以看看其他人的博客
完整代码:
#include <cstdio>
#include <windows.h>
#include <conio.h>char a[20][20]={"##########","## ###","##O### #","# S O O #","# **# O ##","##**# ##","##########"};void Prepare()
{// 设置颜色 //system("color f0");// 隐藏光标 //HANDLE hOut;CONSOLE_CURSOR_INFO curInfo;hOut=GetStdHandle(STD_OUTPUT_HANDLE); curInfo.dwSize=1;curInfo.bVisible=0;SetConsoleCursorInfo(hOut,&curInfo);// 设置标题 //SetConsoleTitle("推箱子");
}void Welcome()
{printf("\n\n 推 箱 子");printf("\n\n 请按任意键开始");getch();system("cls");
}void Set()
{HANDLE hOut;COORD pos={0,0};hOut=GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorPosition(hOut,pos);
}int main()
{Prepare();Welcome();int x=3,y=2;char ch;int cnt=0;for(int i=0;i<=6;i++)puts(a[i]);while(1){ch=getch();if(ch==-32){ch=getch();if(ch==80){if(a[x+1][y]==' '){a[x][y]=' ';x++;a[x][y]='S';}else if(a[x+1][y]=='O'){if(a[x+2][y]==' '){a[x][y]=' ';x++;a[x][y]='S';a[x+1][y]='O';}else if(a[x+2][y]=='*'){a[x][y]=' ';x++;a[x][y]='S';a[x+1][y]=' ';cnt++;}}}else if(ch==72){if(a[x-1][y]==' '){a[x][y]=' ';x--;a[x][y]='S';}else if(a[x-1][y]=='O'){if(a[x-2][y]==' '){a[x][y]=' ';x--;a[x][y]='S';a[x-1][y]='O';}else if(a[x-2][y]=='*'){a[x][y]=' ';x--;a[x][y]='S';a[x-1][y]=' ';cnt++;}}}else if(ch==75){if(a[x][y-1]==' '){a[x][y]=' ';y--;a[x][y]='S';}else if(a[x][y-1]=='O'){if(a[x][y-2]==' '){a[x][y]=' ';y--;a[x][y]='S';a[x][y-1]='O';}else if(a[x][y-2]=='*'){a[x][y]=' ';y--;a[x][y]='S';a[x][y-1]=' ';cnt++;}}}else if(ch==77){if(a[x][y+1]==' '){a[x][y]=' ';y++;a[x][y]='S';}else if(a[x][y+1]=='O'){if(a[x][y+2]==' '){a[x][y]=' ';y++;a[x][y]='S';a[x][y+1]='O';}else if(a[x][y+2]=='*'){a[x][y]=' ';y++;a[x][y]='S';a[x][y+1]=' ';cnt++;}}}}Set();for(int i=0;i<=6;i++)puts(a[i]);if(cnt==4)break;}printf("你赢了!");Sleep(10000);return 0;
}
用 Dev-C++ 编写简单的推箱子小游戏相关推荐
- java命令行简单实现推箱子小游戏
import java.util.Random; import java.util.Scanner; public class Push {char[][] map;int peoI,peoJ,box ...
- Python【小游戏合集】之自己做一个简单又好玩的推箱子小游戏
导语:哈喽铁汁们~今日游戏之旅开始! 想领取完整源码跟python学习资料可私信我或点击这行字体 这期就是带大家使用当前主流且易用的Python语言做一个简单的推箱子小游戏 现在小编的快乐源泉就是玩自 ...
- Android Studio实现推箱子小游戏
项目目录 一.项目概述 二.开发环境 三.详细设计 四.运行演示 五.项目总结 六.源码获取 一.项目概述 推箱子是一款非常受欢迎的益智游戏,游戏的玩法简单,但是需要玩家具备一定的逻辑思维能力和空间感 ...
- PLC也能制作小游戏----Codesys编写推箱子小游戏
1.序言 前文已介绍,Codesys编程软件拥有的各种编译方式,以及强大的可视化功能,完全可以实现类似的小游戏程序编写,让疲惫的工控人员在调机的空闲之余可以休闲下,本文编写另一个小游戏,也是十几年前的 ...
- 简单的c语言推箱子程序,完整版本的推箱子小游戏,最简单的纯C语言打造
/*推箱子小游戏 1.定义绘制样式 用二维数组的方式 2.绘制图像 3.找出当前位置 4.逻辑判断,制造动作 根据数学xy轴的规律,这里使用ij 上移,行轴上升,行数减少 下移,行数下降,函数增加 左 ...
- 手把手教你使用Python实现推箱子小游戏(附完整源码)
文章目录 项目介绍 项目规则 项目接口文档 项目实现过程 前置方法编写 move核心方法编写 项目收尾 项目完善 项目整体源码 项目缺陷分析 项目收获与反思 项目介绍 我们这个项目是一个基于Pytho ...
- 用C语言实现推箱子小游戏基础程序plus
目录 设计一个简单的推箱子游戏 功能设计要求: 代码实现 数据定义头文件data_def.h 窗口设置头文件WindowsSet.h WindowsSet.cpp 上移函数 矩阵旋转函数 游戏帧 菜单 ...
- 一个适合初学者的C++推箱子小游戏
一个适合初学者的C++推箱子小游戏 博主最近在学习关于C++的一些基础,这是本人突发奇想做的一个小游戏,编程其实并不难,重要的是,你的思路,以及优化,当然,这个小游戏,本人也是基于一个学习者编写的 本 ...
- c++ 小游戏_C/C++编程笔记:C语言写推箱子小游戏,大一学习C语言练手项目
C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游 ...
最新文章
- 41-高级路由:BGP AS长度:接收一切、最大AS长度、不比较AS长度
- spring-使用配置文件完成JdbcTemplate操作数据库-c3p0
- Vue项目如何提高效率?大厂2大实践总结告诉你
- 计算机科学与教育信息化国际会议,A Courses Ontology System for Computer Science Education...
- 微创社001期:从0开始创作第一本技术书
- [转]粵語固有辭彙與漢語北方話辭彙對照
- 不会几个框架,都不好意思说搞过前端: Vue.js - 60分钟快速入门
- php mysql.so 下载_Linux安装php-mysql提示需要:libmysqlclient.so.18()(64bit)的解决办法-Go语言中文社区...
- 牛客练习赛 栈和排序
- java引用微信支付的p12证书文件
- 使用C#调用外部序或是执行DOS命令
- linux apache mysql python 搭建_linux 下安装 mysql 并配置 python 开发环境
- 菜鸟IT技术杂谈(一)——从多任务系统原理说起
- 如何在浏览器打开pdf文件头部隐藏菜单栏?
- python快递费用计算_python调用快递鸟api实现查快递
- ibm服务器x3650m4引导,IBM X3650 M4安装win 2008 Server操作指南
- 怎么查看无线路由器连接的设备连接服务器,手机如何查看无线wifi连接人数 手机查看无线wifi连接人数方法【介绍】...
- python数据分析pandas_利用Python进行数据分析笔记-pandas建模(Patsy篇)
- 显示器的 VGA、HDMI、DVI 和 DisplayPort
- 北风修仙笔记—2020年8月