推箱子小游戏---c语言
推箱子
游戏特色
1、游戏同时支持鼠标和键盘操作,鼠标操作时,可点击任意你想去的地方。
2、提供回复上一步的功能,可以回到任何一步走过的路径,可以给用户足够的思考空间,使用户的智力在游戏的乐趣中得到充分的锻炼。也可以一退到底。
3、屏幕上方显示当前的关数,您可以方便地选关进行游戏。
4、在目标文件夹里,可以用记事本打开Map.dat文件,自行设计游戏关卡,加载界面及元素,添加后再次打开程序才能更新。
#include <stdio.h>
#include <stdlib.h>
#include "get_keyboard.h"#define ROA 0
#define WAL 1
#define BOX 2
#define TER 3
#define MOU 4
#define MOUINTER (MOU+TER) //小老鼠在终点
#define BOXINTER (BOX+TER) //箱子在终点int g_board[7][8] = {{0,1,1,1,1,1,1,0},{1,0,0,0,0,0,1,1},{1,3,0,1,1,2,0,1},{1,0,3,3,2,0,0,1},{1,2,0,1,0,0,0,1},{1,0,4,0,0,0,0,1},{1,1,1,1,1,1,1,1}};int mx;int my;void init(){int i,j;for(i = 0;i < 7;i++){for(j = 0;j < 8;j++){if(g_board[i][j] == MOU){mx = i;my = j;break;}}}}//小老鼠去往位置的增量void move(int stepx,int stepy){//小老鼠要去往坐标的位置int nextx = mx + stepx;int nexty = my + stepy;switch(g_board[nextx][nexty]){case ROA:case TER:g_board[nextx][nexty] += MOU;//小老鼠移动到下个位置g_board[mx][my] -= MOU;//小老鼠原来的位置恢复成原来的样子mx = nextx;my = nexty;//记录小老鼠新的位置break;case BOX:case BOXINTER:{int nnextx = mx + 2*stepx;//下下个坐标的位置int nnexty = my + 2*stepy;int val = g_board[nnextx][nnexty];if(val == ROA || val == TER){g_board[nnextx][nnexty] += BOX;g_board[nextx][nexty] -= BOX;g_board[nextx][nexty] += MOU;g_board[mx][my] -= MOU;mx = nextx;my = nexty;}}break; }}void show(){int i,j;for(i = 0;i<7;i++){for(j = 0;j<8;j++){switch(g_board[i][j]){case ROA:printf(" ");break;case WAL:printf("#");break;case BOX:case BOXINTER:printf("@");break;case TER:printf("o");break;case MOU:case MOUINTER:printf("&");break;}}printf("\n");}}void run(void){while(1){init();system("clear");//刷新地图show();//显示地图//等待用用户输入int key = get_keyboard();switch(key){case KEY_UP:move(-1,0);break;case KEY_DOWN:move(1,0);break;case KEY_LEFT:move(0,-1);break;case KEY_RIGHT:move(0,1);break;}}}int main()
{run();return 0;
}
获取键位
#ifndef GETCH_H
#define GETCH_H
#include <stdio.h>
#include <termios.h>
#include <stdlib.h>
#include <unistd.h>typedef enum KEYBOARD
{KEY_UP = 183,KEY_DOWN = 184,KEY_RIGHT = 185,KEY_LEFT = 186,KEY_BACKSPACE = 127,KEY_ENTER = 10,KEY_0 = 48,KEY_1 = 49,KEY_2 = 50,KEY_3 = 51,KEY_4 = 52,KEY_5 = 53,KEY_6 = 54,KEY_7 = 55,KEY_8 = 56,KEY_9 = 57,KEY_A = 65,KEY_B = 66,KEY_C = 67,KEY_D = 68,KEY_E = 69,KEY_F = 70,KEY_G = 71,KEY_H = 72,KEY_I = 73,KEY_J = 74,KEY_K = 75,KEY_L = 76,KEY_M = 77,KEY_N = 78,KEY_O = 79,KEY_P = 80,KEY_Q = 81,KEY_R = 82,KEY_S = 83,KEY_T = 84,KEY_U = 85,KEY_V = 86,KEY_W = 87,KEY_X = 88,KEY_Y = 89,KEY_Z = 90,KEY_a = 97,KEY_b = 98,KEY_c = 99,KEY_d = 100,KEY_e = 101, KEY_f = 102,KEY_g = 103,KEY_h = 104,KEY_i = 105,KEY_j = 106,KEY_k = 107,KEY_l = 108,KEY_m = 109,KEY_n = 110,KEY_o = 111,KEY_p = 112,KEY_q = 113,KEY_r = 114,KEY_s = 115,KEY_t = 116,KEY_u = 117,KEY_v = 118,KEY_w = 119,KEY_x = 120,KEY_y = 121,KEY_z = 122
}KEYBOARD;//此函数能立即从键盘不回显的接收数据
static int get_keyboard(void)
{//接收系统调用的执行结果int ret = 0;//存储终端设备的配置信息struct termios old;//通过系统调用获取终端的配置信息ret=tcgetattr(STDIN_FILENO,&old);if(0 > ret){perror("tcgetattr");return -1;}//初始化新的终端配置信息struct termios new = old;//取消回显并立即获取new.c_lflag &= ~(ICANON|ECHO);//设置新的终端配置信息ret= tcsetattr(STDIN_FILENO,TCSANOW,&new);if(0 > ret){perror("tcsetattr");return -2;}//在新的模式下从终端获取数据int key_value = 0;do{key_value += getchar();//由于和系统对FILE结构体的实现各不相同//linux系统 while(stdin->_IO_read_end - stdin->_IO_read_ptr);//OS系统 while(stdin->_r);}while(stdin->_IO_read_end - stdin->_IO_read_ptr);//还原终端的配置信息ret = tcsetattr(STDIN_FILENO,TCSANOW,&old);if(0 > ret){perror("tcsetattr");return -3;}//返回获取到的数据return key_value;
}
#endif//GETCH_H
推箱子小游戏---c语言相关推荐
- 控制台推箱子小游戏C语言
自己开发的C语言控制台推箱子小游戏,基于二维数组实现,功能不多但是游戏整体较为完整,因为技术有限,所以代码暂未优化且整体显得较为臃肿,整体架构简单,代码全自主设计编写,仅作交流学习,还望大佬多多指点. ...
- c++ 小游戏_C/C++编程笔记:C语言写推箱子小游戏,大一学习C语言练手项目
C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游 ...
- 用C语言实现推箱子小游戏基础程序plus
目录 设计一个简单的推箱子游戏 功能设计要求: 代码实现 数据定义头文件data_def.h 窗口设置头文件WindowsSet.h WindowsSet.cpp 上移函数 矩阵旋转函数 游戏帧 菜单 ...
- 大一C语言课程设计之推箱子小游戏
大一C语言课程设计之推箱子小游戏 先看一下效果 因为技术原因,开发说明没有加进去 按任意键以后 )] 同时响起来 你笑起来真好看的bgm 胜利界面会弹出一个弹出框 私信我或者加我qq:65245534 ...
- c 语言推箱子vs,C语言推箱子小游戏教程
作者GitHub-Pages个人主页 本教程GitHub-Pages链接 本教程百度云下载地址 本教程编写于2016/11/22 Dawson Lee edited this page on Beij ...
- C语言实现推箱子小游戏
一.设计目的 用简单的C语言知识制作的推箱子游戏,通过上下左右键将所有箱子移动到目标位置. 2.让我们更好地了解和巩固C语言知识,并实际运用,同时运用一些不太常见的知识点. 二.功能描述 1.模块功能 ...
- 简单的c语言推箱子程序,完整版本的推箱子小游戏,最简单的纯C语言打造
/*推箱子小游戏 1.定义绘制样式 用二维数组的方式 2.绘制图像 3.找出当前位置 4.逻辑判断,制造动作 根据数学xy轴的规律,这里使用ij 上移,行轴上升,行数减少 下移,行数下降,函数增加 左 ...
- c#推箱子小游戏代码_推箱子小游戏V1.0制作
小游戏实践 推箱子简易版 大家好,我是努力学习争取成为优秀的Game Producer的路人猿,今天来一起做一个推箱子的简易版本V1.0!下面跟我一起做吧~ 我们用到的软件如下: 编辑类 Visual ...
- win32GDI函数编程实现推箱子小游戏
利用GDI绘图函数实现推箱子小游戏,代码源于上一篇博客 C语言控制台推箱子. 实现方法很简单,把字符用绘图函数绘出的图形替换即可. 从字符控制台到win32界面编程,更加形象化. 代码量大增,主程序就 ...
最新文章
- Centos6.4 + PHP5.5.11 + Mysql5.6.16 + Tnginx2.02 + Memcached1.4.17 + Redis2.2
- 图解软件定义存储-百炼钢成绕指柔
- 【数据结构与算法】之深入解析“石子游戏VI”的求解思路与算法示例
- php数组中删除元素
- 从vivo 大规模特征存储实践中学点经验
- JavaWeb笔记03-Servlet
- (38)FPGA面试技能提升篇(C/C++、questasim仿真工具)
- AOJ0121 Seven Puzzle【BFS】
- 乐视入股酷派,手机圈全面战争已开打
- 胖哈勃杯Pwn400、Pwn500详解
- 12864 c语言,单片机12864 c程序
- (二十一)美萍酒店管理系统:系统维护_系统设置_房间类型_房间费打折
- Window10系统下通过SMB协议连接和断开资源服务器
- 续流二极管作用及工作原理
- 新浪微博技术架构分析 2010
- 【深度学习经典网络架构—5】:ResNet
- TFN频谱仪为什么好用以150为例
- android 卡顿、ANR优化(1)屏幕刷新机制
- GSI-PDP管网勘测综合数据处理软件操作手册
- SpringCloud系列之版本选择
热门文章
- 2021-03-10-数据结构与算法开始学习
- Android Kotlin 学习总结(一) 《KAE 优缺点并且深入字节码分析工作原理》
- Java育儿经2:变量和数据类型
- 基于51单片机的超声波水位液位监测仿真程序设计
- 计算机的硬盘维修,电脑的硬盘出现了异常和坏道如何在家自己维修详细方法说明...
- Tensorflow 1.x 和 Pytorch 中 Conv2d Padding的区别
- 医院计算机网络系统的意义,计算机网络系统在医院管理的运用
- 39健康网之前世今生
- SAP生产投料的方式
- 机房收费系统数据库概念结构设计