在LINUX环境终端下用C语言实现推箱子小游戏

本文介绍了如何在LINUX环境下使用C语言实现推箱子小游戏。通过获取键盘输入来控制游戏方向,利用二维数组表示游戏地图,规定不同数字代表路、墙、人、箱子和目标,并制定了移动和胜利判定规则。文章给出了部分关键代码实现。
摘要由CSDN通过智能技术生成

首先要玩这个游戏得先获取键盘的键值,从而判定方向

获取方向键的功能:使用头文件 getch.h 中的gech函数
代码如下:

#ifndef GETCH_H
#define GETCH_H

#include <termios.h>
#include <unistd.h>

// 修改终端的控制方式,1取消回显、确认 2获取数据 3还原
static int getch(void)
{
   
    // 记录终端的配置信息
    struct termios old;
    // 获取终端的配置信息
    tcgetattr(STDIN_FILENO,&old);
    // 设置新的终端配置   
    struct termios new = old;
    // 取消确认、回显
    new.c_lflag &= ~(ICANON|ECHO);
    // 设置终端配置信息
    tcsetattr(STDIN_FILENO,TCSANOW,&new);

    // 在新模式下获取数据   
    int key_val = 0; 
    do{
   
    	key_val += getchar();
    }while(stdin->_IO_read_end - stdin->_IO_read_ptr);

    // 还原配置信息
    tcsetattr(STDIN_FILENO,TCSANOW,&old); 
    return key_val; 
}

#endif//GETCH_H

建立好头文件后由电脑到虚拟的LINUX环境步骤如下:

1、在windows中把getch.h头文件放入共享文件夹

2、终端进入贡献文件夹:
    cd /media/sf_Share
    
3、复制头文件到共享库
    sudo cp getch.h /usr/include/
    
4、加读取权限:
    sudo chmod +r /usr/include/gerch.h 

分别测试一下上下左右的键值

 #include <stdio.h>
 #include<getch.h>
 int main(int argc,const char*argv[])
 {
   
    for(int i=0;i<4;i++)
         printf("%d ",getch());
  }

在这里插入图片描述

得到的方向以及键值如下:

上:183  下:184   右:185   左:186

再大致分析一下代码的整体轮廓
1.确定各种对应关系,墙体、路等用什么表示
2.画好地图
3.移动规则
4.判定规则

准备好这些就可以写代码啦

1.首先分析一下情况
推箱子游戏由路、墙、人、箱子以及目标组成
所以可以考虑用不同的数字代表这些情景,结合二维数组构成基本的地图
我这里的设定如下:分别用数字0、1、 2、 3、 4代表路、墙、人、箱子以及目标
2.地图定义如下:

	int arry[8][8]={
   
		{
   1,1,1,1,1,1,1,1},
		{
   1,1,1,4,4,1,1,1},
		{
   1,1,1,0,4,1,1,1},
		{
   1,1,0,0,3,4,1,1},
		{
   1,1,0,3,0,0,1,1},
		{
   1,0,0,1,3,3,0,1},
		{
   1,2,0,0,0,0,0,1},
		{
   1,1,1,1,1<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值