推箱子小游戏

--print("开发流程步骤:I、绘制推箱子地图并初始化 ----- 几*几大小的地图 \n\n                            II、根据宏定义和推箱子地图上的数字来选择不同的图形\n\n                            III、获取玩家坐标   -----------重点\n\n                                        (有两种情况:1.最开始玩家的坐标,并获取其横纵坐标\n\n                                                                 2. 玩家在目的地上时的坐标,  并获取其横纵坐标 )\n\n                            IV、移动箱子        ----------------重点、难点\n\n                                        根据你所要移动的方向    分别判断箱子是否可以移动\n\n                                        以向上为例:分为以下几种情况\n\n                                        1.玩家上面是否为空地或目的地,若是,那就箱子移动\n\n                                        2.玩家前面为箱子或箱子加目的地,箱子的前面是否为目的地或空地,若是,则移动箱子(箱子移动到原来箱子的前面,人移动到原来箱子的位置)\n\n                           V、判断是否通关,并设置多关卡\n\n                                        判断通关的条件:是否还有箱子")
  

1e1ab711672847ba870c333f5c741871.png

 


  --[[  开发流程步骤:I、绘制推箱子地图并初始化 ----- 几*几大小的地图                  II、根据宏定义和推箱子地图上的数字来选择不同的图形

                 III、获取玩家坐标   -----------重点

                      (有两种情况:1.最开始玩家的坐标,并获取其横纵坐标

                                  2. 玩家在目的地上时的坐标,  并获取其横纵坐标 )

                 IV、移动箱子        ----------------重点、难点

                   根据你所要移动的方向    分别判断箱子是否可以移动

                      以向上为例:分为以下几种情况

                       1.玩家上面是否为空地或目的地,若是,那就箱子移动

                       2.玩家前面为箱子或箱子加目的地,箱子的前面是否为目的地或空地,
                          若是,则移动箱子(箱子移动到原来箱子的前面,人移动到原来箱子的位置)

                  V、判断是否通关,并设置多关卡

                      判断通关的条件:是否还有箱子
    ]]
--1、初始化地图、定义全局变量         
local SPACE=0--{"空白", "  "}
local WALL=1--{"墙","墙 "}
local DEST=2--{"目的地","@@"}
local BOX=3--{"箱子","¥"}
local PLAYER=4--{"玩家","&&"}
local userkey=75
 
 
--tip:注意获取人在目的地时的坐标,    
 
--定义两个全局变量   m,n 分别为玩家的横纵坐标
local m, n=0,0
local level=0--关卡
--IMAGE image[7]
--初始化地图
local gamemap = {
    {
         {0,0,0,0,0,0,0,0,0,0},
         {0,0,0,1,1,1,0,0,0,0},
         {0,0,0,1,2,1,0,0,0,0},
         {0,0,0,1,3,1,1,1,1,0},
         {0,1,1,1,0,0,3,2,1,0},
         {0,1,2,3,4,0,1,1,1,0},
         {0,1,1,1,1,3,1,0,0,0},
         {0,0,0,0,1,2,1,0,0,0},
         {0,0,0,0,1,1,1,0,0,0},
         {0,0,0,0,0,0,0,0,0,0},
    },
    {
         {0,0,0,0,0,0,0,0,0,0},
         {0,1,1,1,0,0,1,1,1,0},
         {1,0,0,0,1,1,0,0,0,1},
         {1,2,0,0,3,0,0,0,0,1},
         {0,1,2,3,4,3,0,0,1,0},
         {0,0,1,0,3,0,2,1,0,0},
         {0,0,0,1,0,2,1,0,0,0},
         {0,0,0,0,1,1,0,0,0,0},
         {0,0,0,0,0,0,0,0,0,0},
         {0,0,0,0,0,0,0,0,0,0},
    },
    {
         {0,0,0,0,0,0,0,0,0,0},
         {0,1,1,1,1,1,1,1,1,0},
         {0,1,2,0,1,2,0,0,1,0},
         {0,1,0,0,1,1,0,0,1,0},
         {0,1,0,3,4,0,3,0,1,0},
         {0,1,0,0,3,0,0,1,1,0},
         {0,1,1,0,1,0,0,1,0,0},
         {0,0,1,0,1,2,0,1,0,0},
         {0,0,1,1,1,1,1,1,0,0},
         {0,0,0,0,0,0,0,0,0,0},
    },
    {
         {1,1,1,1,1,1,1,1,1,1},
         {1,0,1,0,0,2,0,0,0,1},
         {1,2,1,1,0,0,0,1,0,1},
         {1,0,0,0,3,0,1,1,2,1},
         {1,0,1,1,4,3,0,1,0,1},
         {1,0,1,0,3,0,3,0,0,1},
         {1,0,1,0,0,0,1,0,0,1},
         {1,2,0,0,0,1,1,1,0,1},
         {1,0,0,0,0,0,0,0,0,1},
         {1,1,1,1,1,1,1,1,1,1},
 
    },
    {
         {0,0,0,0,1,1,0,0,0,0},
         {0,0,0,1,2,0,1,0,0,0},
         {0,0,1,0,3,0,2,1,0,0},
         {0,1,0,0,3,1,0,0,1,0},
         {1,0,0,3,0,3,0,0,0,1},
         {1,0,0,1,0,3,1,2,0,1},
         {0,1,2,0,0,0,2,0,1,0},
         {0,0,1,0,1,0,0,1,0,0},
         {0,0,0,1,0,0,1,0,0,0},
         {0,0,0,0,1,1,0,0,0,0},
    },
}
 -- 2、加载图片并绘制推箱子界面  
 local function game()
    --加载图片    
    for i=1,8 do
        image[i]=mapimage[i]
    end    
 end
 
--绘制页面
 local function drawMap(map)    
    --输出地图
    for i=1,10 do
        for j=1,10 do
        --image[arr[level][i][j]]
        end
    end
 end
    
--3、通过方向键移动,推箱子----------重难点
--[[local SPACE=0--{"空白", "  "}
local WALL=1--{"墙","墙 "}
local DEST=2--{"目的地","@@"}
local BOX=3--{"箱子","¥"}
local PLAYER=4--{"玩家","&&"}
]]


--按键控制移动方向
 local function move(userkey)
    local userkey=72
    if userkey==72 or userkey=="w" or userkey=="W" then
        --玩家前面是否为空地
        if  arr[level][m - 1][n] == SPACE or arr[level][m - 1][n] == DEST then
            arr[level][m - 1][n] = PLAYER + arr[level][m - 1][n]
            arr[level][m][n] = arr[level][m][n] - PLAYER        
        --玩家前面是否为箱子
        elseif  arr[level][m - 1][n] == BOX or arr[level][m - 1][n] == BOX + DEST then 
            --箱子前面是否为空地或目的地
            if  arr[level][m - 2][n] == SPACE or arr[level][m - 2][n] == DEST then 
                arr[level][m - 2][n] = arr[level][m - 2][n] + BOX
                arr[level][m - 1][n] = arr[level][m - 1][n] - BOX
                arr[level][m - 1][n] = arr[level][m - 1][n] + PLAYER
                arr[level][m][n] = arr[level][m][n] - PLAYER
            end 
        print("向上移动")
        --Sleep(1000)
        end
    elseif userkey==80 or userkey== "s" or userkey=="S" then
    --玩家后面是否为空地
        if  arr[level][m + 1][n] == SPACE or arr[level][m + 1][n] == DEST then
            arr[level][m + 1][n] = PLAYER + arr[level][m + 1][n]
            arr[level][m][n] = arr[level][m][n] - PLAYER        
        --玩家后面是否为箱子
        elseif  arr[level][m + 1][n] == BOX or arr[level][m + 1][n] == BOX + DEST then 
            --箱子后面是否为空地或目的地
            if  arr[level][m + 2][n] == SPACE or arr[level][m + 2][n] == DEST then 
                arr[level][m + 2][n] = arr[level][m + 2][n] + BOX
                arr[level][m + 1][n] = arr[level][m + 1][n] - BOX
                arr[level][m + 1][n] = arr[level][m + 1][n] + PLAYER
                arr[level][m][n] = arr[level][m][n] - PLAYER
            end 
        print("向下移动")
        end
    elseif userkey==75 or userkey== "a" or userkey=="A" then    
        --玩家左边是否为空地
        if  arr[level][m][n - 1] == SPACE or arr[level][m][n - 1] == DEST then 
            arr[level][m][n - 1] = arr[level][m][n - 1] + PLAYER
            arr[level][m][n] = arr[level][m][n] - PLAYER        
        --玩家左边是否为箱子
        elseif  arr[level][m][n - 1] == BOX or arr[level][m][n - 1] == BOX + DEST then 
            --箱子左边是否为空地或目的地
            if  arr[level][m][n - 2] == SPACE or arr[level][m][n - 2] == DEST then 
                arr[level][m][n - 2] = arr[level][m][n - 2] + BOX
                arr[level][m][n - 1] = arr[level][m][n - 1] - BOX
                arr[level][m][n - 1] = arr[level][m][n - 1] + PLAYER
                arr[level][m][n] = arr[level][m][n] - PLAYER
            end    
         print("向左移动")
        end
    elseif userkey==77 or userkey== "d" or userkey=="D" then    
        --玩家右边是否为空地
        if  arr[level][m][n + 1] == SPACE or arr[level][m][n + 1] == DEST then 
            arr[level][m][n + 1] = arr[level][m][n + 1] + PLAYER
            arr[level][m][n] = arr[level][m][n] - PLAYER        
        --玩家左边是否为箱子
        elseif  arr[level][m][n + 1] == BOX or arr[level][m][n + 1] == BOX + DEST then 
            --箱子左边是否为空地或目的地
            if  arr[level][m][n + 2] == SPACE or arr[level][m][n + 2] == DEST then 
                arr[level][m][n + 2] = arr[level][m][n + 2] + BOX
                arr[level][m][n + 1] = arr[level][m][n + 1] - BOX
                arr[level][m][n + 1] = arr[level][m][n + 1] + PLAYER
                arr[level][m][n] = arr[level][m][n] - PLAYER
            end    
         print("向右移动")    
        end
    end
   
 end

-- 4、判断是否通过--------有无箱子的存在
--判断是否通关--------------是否还有箱子
 local function judge()
    for i=1,10 do
       for j=1,10 do 
          if arr[level][i][j] == BOX then
            return false
           end
       end
    end
    return true
 end

--5.main函数里面
 local function main() 
        
    SetWindowText(GetHWnd(), "推箱子")
    initgame()
    drawMap()
 
        --获取玩家坐标,并将其下标分别赋给 m,n
        for i=1,10 do
              for j=1,10 do
             if arr[level][i][j] == PLAYER or arr[level][i][j]== PLAYER+DEST then
               m,n=i,j
             end
           end
         end         
        move()
        system("cls")
        drawMap()
        if bool_judge() then
            if level>1 then
                exit(666)
                MessageBox(GetHWnd(), "恭喜你通关了", "提示", MB_OKCANCEL)
                Sleep(3000)
            end
            
            level=level+1
            print("恭喜你过关了,大佬666\n")
        end    
 end
    


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/240477.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html旋转相册

一、实验题目 做一个旋转的3d相册 二、实验代码 <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport&qu…

AtomHub 开源容器镜像中心开放公测,国内服务稳定下载

由开放原子开源基金会主导&#xff0c;华为、浪潮、DaoCloud、谐云、青云、飓风引擎以及 OpenSDV 开源联盟、openEuler 社区、OpenCloudOS 社区等成员单位共同发起建设的 AtomHub 可信镜像中心正式开放公测。AtomHub 秉承共建、共治、共享的理念&#xff0c;旨在为开源组织和开…

webpack 常见面试题

1、什么是webpack&#xff08;必会&#xff09; webpack是一个打包模块化javascript的工具&#xff0c;在webpack里一切文件皆模块&#xff0c;通过loader转换文件&#xff0c;通过plugin注入钩子&#xff0c;最后输出由多个模块组合成的文件&#xff0c;webpack专注构建模块化…

医保购药小程序:智能合约引领医疗数字革新

在医疗领域&#xff0c;医保购药小程序通过引入智能合约技术&#xff0c;为用户提供更为高效、安全的购药体验。本文将通过简单的智能合约代码示例&#xff0c;深入探讨医保购药小程序如何利用区块链技术中的智能合约&#xff0c;实现医保结算、购药监控等功能&#xff0c;为医…

获取 jira filter issue count 方法

文章目录 一、[使用 REST API(自 5.0 起)获取total issue count](https://jira.atlassian.com/browse/JRA-29903)。Step 1: get the filter search URLStep 2: run the search with maxResults=0二、使用 jira-python 获取 total issue count一、使用 REST API(自 5.0 起)获…

leetCode算法—13. 罗马数字转整数

13. 罗马数字转整数 难度&#xff1a;简单 * 罗马数字包含以下七种字符: I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如&#xff0c; 罗马数字 2 写做 II &#xff0c;即为两个并列的…

【华为机试】2023年真题B卷(python)-出错的或电路

一、题目 题目描述&#xff1a; 某生产门电路的厂商发现某一批次的或门电路不稳定&#xff0c;具体现象为计算两个二进制数的或操作时&#xff0c;第一个二进制数中某两个比特位会出现交换&#xff0c; 交换的比特位置是随机的&#xff0c;但只交换这两个位&#xff0c;其他位不…

综述 2022-Nature Medicine :AI+生物医学

Acosta, Julin N., et al. "Multimodal biomedical AI." Nature Medicine 28.9 (2022): 1773-1784. 被引次数&#xff1a;210 一、生物医学数据类型 biobanks, electronic health records, medical imaging, wearable and ambient biosensors, and the lower cost …

AI大模型:未来科技的新篇章

目录 1AI大模型&#xff1a;未来科技的新篇章 2AI超越数学家攻克经典数学难题&#xff1b;非侵入式设备解码大脑思维 1AI大模型&#xff1a;未来科技的新篇章 随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已经成为了我们生活中不可或缺的一部分。而AI大…

高级ACL配置

高级ACL配置可以包括更复杂的条件和操作&#xff0c;以实现更精细的访问控制。下面是一个更具体的高级ACL配置示例&#xff1a; 进入网络设备的命令行界面或图形用户界面。 进入全局配置模式&#xff0c;在命令行界面中输入 "configure terminal" 命令。 创建并命名…

RoIAlign在深度学习怎么翻译

RoIAlign 的中文翻译可以是 "感兴趣区域对齐"。RoIAlign 是一种在深度学习中常用于目标检测的技术&#xff0c;它用于提取感兴趣区域&#xff08;Region of Interest&#xff0c;简称 RoI&#xff09;中的特征并进行对齐操作&#xff0c;以更准确地捕捉目标的特征信息…

Windows系统找不到xinput1_3.dll怎么办?

引言&#xff1a; 在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是xinput1_3.dll丢失。那么&#xff0c;xinput1_3.dll究竟是什么&#xff1f;为什么会出现丢失的情况&#xff1f;丢失后会对计算机产生什么影响&#xff1f;本文将详细介绍…

<JavaEE> 基于 UDP 的 Socket 通信模型

目录 一、认识相关API 1&#xff09;DatagramSocket 2&#xff09;DatagramPacket 3&#xff09;InetSocketAddress 二、UDP数据报套接字通信模型概述 三、回显客户端-服务器通信 1&#xff09;服务器代码 2&#xff09;客户端代码 一、认识相关API 1&#xff09;Data…

2023.12.21 关于 Redis 常用数据结构 和 单线程模型

目录 各数据结构具体编码方式 查看 key 对应 value 的编码方式 Reids 单线程模型 经典面试题 IO 多路复用 Redis 常用数据结构 Redis 中所有的 key 均为 String 类型&#xff0c;而不同的是 value 的数据类型却有很多种以下介绍 5 种 value 常见的数据类型 注意&#xff1…

计算机网络概述(下)——“计算机网络”

各位CSDN的uu们你们好呀&#xff0c;今天继续计算机网络概述的学习&#xff0c;下面&#xff0c;让我们一起进入计算机网络概述的世界吧&#xff01;&#xff01;&#xff01; 计算机网络体系结构 数据传输流程 计算机网络性能指标 计算机网络体系结构 两个计算机系统必须高度…

7.4组合总和(LC39-M)

算法: 组合问题&#xff0c;用回溯。 画树 回溯三部曲&#xff1a; 1.确定函数返回值和参数&#xff1a; 返回值&#xff1a;void 参数&#xff1a; candidates, target&#xff08;题目中给出的&#xff09; sum&#xff1a;统计每个组合的和&#xff0c;是否target …

5G NTN:通信新天地,卫星通信的奇妙探索

导言&#xff1a; 嗨&#xff0c;大家好&#xff01;今天我们要深入了解一项让通信更强大的技术——5G NTN。它和卫星通信结合在一起&#xff0c;为我们带来了通信的新时代。在这篇文章中&#xff0c;我们将用白话文揭示5G NTN和卫星通信的关系&#xff0c;探索这个通信世界的奇…

鞋服用户运营策略如何实现有效闭环?

实现长期价值和业务闭环是企业经营的关键。对于鞋服行业来说&#xff0c;如何基于客户旅程编排&#xff08;Customer Journey Orchestration&#xff0c;简称 CJO&#xff09;实现用户运营策略的有效闭环&#xff0c;提升长期价值呢&#xff1f; 本文围绕该主题&#xff0c;从鞋…

Ai 会替代人类工作吗?

目录 一、分析 二、一些案例 三、总结 一、分析 人工智能&#xff08;AI&#xff09;的发展和应用正在改变我们的生活和工作方式。在某些领域&#xff0c;AI已经显示出了强大的能力和潜力&#xff0c;可以比人类更快、更准确地完成任务。然而&#xff0c;是否会完全取代人类…

Golang leetcode59 螺旋矩阵

螺旋矩阵 leetcode59 初次尝试&#xff0c;从中心向外 func main() {n : 3fmt.Println(generateMatrix(n)) }// 初版&#xff0c;我们从中心点开始 func generateMatrix(n int) [][]int {//1.nXn矩阵table : make([][]int, n)for i : 0; i < n; i {table[i] make([]int, …