用 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++ 编写简单的推箱子小游戏相关推荐

  1. java命令行简单实现推箱子小游戏

    import java.util.Random; import java.util.Scanner; public class Push {char[][] map;int peoI,peoJ,box ...

  2. Python【小游戏合集】之自己做一个简单又好玩的推箱子小游戏

    导语:哈喽铁汁们~今日游戏之旅开始! 想领取完整源码跟python学习资料可私信我或点击这行字体 这期就是带大家使用当前主流且易用的Python语言做一个简单的推箱子小游戏 现在小编的快乐源泉就是玩自 ...

  3. Android Studio实现推箱子小游戏

    项目目录 一.项目概述 二.开发环境 三.详细设计 四.运行演示 五.项目总结 六.源码获取 一.项目概述 推箱子是一款非常受欢迎的益智游戏,游戏的玩法简单,但是需要玩家具备一定的逻辑思维能力和空间感 ...

  4. PLC也能制作小游戏----Codesys编写推箱子小游戏

    1.序言 前文已介绍,Codesys编程软件拥有的各种编译方式,以及强大的可视化功能,完全可以实现类似的小游戏程序编写,让疲惫的工控人员在调机的空闲之余可以休闲下,本文编写另一个小游戏,也是十几年前的 ...

  5. 简单的c语言推箱子程序,完整版本的推箱子小游戏,最简单的纯C语言打造

    /*推箱子小游戏 1.定义绘制样式 用二维数组的方式 2.绘制图像 3.找出当前位置 4.逻辑判断,制造动作 根据数学xy轴的规律,这里使用ij 上移,行轴上升,行数减少 下移,行数下降,函数增加 左 ...

  6. 手把手教你使用Python实现推箱子小游戏(附完整源码)

    文章目录 项目介绍 项目规则 项目接口文档 项目实现过程 前置方法编写 move核心方法编写 项目收尾 项目完善 项目整体源码 项目缺陷分析 项目收获与反思 项目介绍 我们这个项目是一个基于Pytho ...

  7. 用C语言实现推箱子小游戏基础程序plus

    目录 设计一个简单的推箱子游戏 功能设计要求: 代码实现 数据定义头文件data_def.h 窗口设置头文件WindowsSet.h WindowsSet.cpp 上移函数 矩阵旋转函数 游戏帧 菜单 ...

  8. 一个适合初学者的C++推箱子小游戏

    一个适合初学者的C++推箱子小游戏 博主最近在学习关于C++的一些基础,这是本人突发奇想做的一个小游戏,编程其实并不难,重要的是,你的思路,以及优化,当然,这个小游戏,本人也是基于一个学习者编写的 本 ...

  9. c++ 小游戏_C/C++编程笔记:C语言写推箱子小游戏,大一学习C语言练手项目

    C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游 ...

最新文章

  1. 41-高级路由:BGP AS长度:接收一切、最大AS长度、不比较AS长度
  2. spring-使用配置文件完成JdbcTemplate操作数据库-c3p0
  3. Vue项目如何提高效率?大厂2大实践总结告诉你
  4. 计算机科学与教育信息化国际会议,A Courses Ontology System for Computer Science Education...
  5. 微创社001期:从0开始创作第一本技术书
  6. [转]粵語固有辭彙與漢語北方話辭彙對照
  7. 不会几个框架,都不好意思说搞过前端: Vue.js - 60分钟快速入门
  8. php mysql.so 下载_Linux安装php-mysql提示需要:libmysqlclient.so.18()(64bit)的解决办法-Go语言中文社区...
  9. 牛客练习赛 栈和排序
  10. java引用微信支付的p12证书文件
  11. 使用C#调用外部序或是执行DOS命令
  12. linux apache mysql python 搭建_linux 下安装 mysql 并配置 python 开发环境
  13. 菜鸟IT技术杂谈(一)——从多任务系统原理说起
  14. 如何在浏览器打开pdf文件头部隐藏菜单栏?
  15. python快递费用计算_python调用快递鸟api实现查快递
  16. ibm服务器x3650m4引导,IBM X3650 M4安装win 2008 Server操作指南
  17. 怎么查看无线路由器连接的设备连接服务器,手机如何查看无线wifi连接人数 手机查看无线wifi连接人数方法【介绍】...
  18. python数据分析pandas_利用Python进行数据分析笔记-pandas建模(Patsy篇)
  19. 显示器的 VGA、HDMI、DVI 和 DisplayPort
  20. 北风修仙笔记—2020年8月

热门文章

  1. android模拟器data文件访问,从Android模拟器中提取文件系统
  2. InterruptException处理方法
  3. PostgreSQL系统配置优化
  4. 用python完成99九九乘法表(简单易懂)
  5. SAP 平行帐(Parallel Accounting)
  6. 故障排查:xShell中文乱码
  7. PHP数组排序二维数组排序
  8. python多重背包问题_01-背包、完全背包、多重背包及其相关应用
  9. 优秀的数据敏感度应该如何培养?
  10. Unity 光照与后处理插件 贴图、视频与着色