2048小游戏

2be1ab82e8964b44a515e7c4c96273bd.jpg

 以下运算核心
local lbrt={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,13,9,5,1,14,10,6,2,15,11,7,3,16,12,8,4,4,3,2,1,8,7,6,5,12,11,10,9,16,15,14,13,1,5,9,13,2,6,10,14,3,7,11,15,4,8,12,16,}
local num={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,}
--当前方向、是否正在进行、是否结束
local drct,ising,isend,has=0,0,0,0
local i,j,k=0,0,0
local score=0

--2048
local function Check()
    for i=1,16 do
        if num[i]==11 then
            isend=99999
        end
    end
    if isend==99999 then
        print("恭喜!2048!")
        has=2
    end
end
--界面显示刷新
local function Re()
    for i=1,16 do
        if num[i]==0 then

        print('')
         else 

        print(2^num[i])    
        end
    end
    print("游戏分数:"..score)
    if has==1 then
        Check()
    end
end
--随机生成1个2/4
local function Add()
    math.randomseed(os.time())
    local z=0
    for i=1,16 do
        if num[i]==0 then
            z=z+1
        end
    end
    if z>0 then
        local r=math.random(1,z)
        for j=1,16 do
            if num[j]==0 then
                r=r-1
            end
            if r==0 then
                math.randomseed(os.time())
                num[j]=math.random(1,10)
                if num[j]<6 then
                    num[j]=2
                    score=score+4
                else
                    num[j]=1
                    score=score+2
                end
                r=-1
            end
        end
    end
    Re()
end
--四个数字的合并
local function Fin(num1,num2,num3,num4)
    local numr={0,0,0,0,}
    local m=1
    if num1~=0 then
        numr[m]=num1
        m=m+1
    elseif (num2~=0)or(num3~=0)or(num4~=0) then
        isend=1
    end
    if num2~=0 then
        numr[m]=num2
        m=m+1
    elseif (num3~=0)or(num4~=0) then
        isend=1
    end
    if num3~=0 then
        numr[m]=num3
        m=m+1
    elseif (num4~=0) then
        isend=1
    end
    if num4~=0 then
        numr[m]=num4
        m=m+1
    end
    if (numr[1]==numr[2])and(numr[1]~=0)and(numr[1]~=11) then
        numr[1]=numr[1]+1
        score=score+math.pow(2,numr[1])
        isend=1
        if (numr[3]==numr[4])and(numr[3]~=0)and(numr[3]~=11) then
            numr[2]=numr[3]+1
            score=score+math.pow(2,numr[2])
            isend=1
            numr[3]=0
            numr[4]=0
            return numr
        else
            numr[2]=numr[3]
            numr[3]=numr[4]
            numr[4]=0
            return numr
        end
    elseif (numr[2]==numr[3])and(numr[2]~=0)and(numr[2]~=11) then
        numr[2]=numr[2]+1
        score=score+math.pow(2,numr[2])
        isend=1
        numr[3]=numr[4]
        numr[4]=0
        return numr
    elseif (numr[3]==numr[4])and(numr[3]~=0)and(numr[3]~=11) then
        numr[3]=numr[3]+1
        score=score+math.pow(2,numr[3])
        isend=1
        numr[4]=0
        return numr
    else
        return numr
    end
end
--滑动
local function Move()
    isend=0
    if has==0 then
        isend=1
        has=1
    end
    for i=1,4 do
        local wn=(drct-1)*16+i*4
        local nw=Fin(num[lbrt[wn-3]],num[lbrt[wn-2]],num[lbrt[wn-1]],num[lbrt[wn]])
        for j=1,4 do
            num[lbrt[wn+j-4]]=nw[j]
        end
    end
    if isend==0 then
        print("无法移动!当前分数:"..score)
    else
        Add()
    end
end
--玩家点击按钮
Go=function(e)
        if 上 then
        drct=1
        Move()
    elseif 下 then
        drct=2
        Move()
    elseif 左 then
        drct=3
        Move()
    elseif 右 then
        drct=4
        Move()
    elseif 重新开始 then
        for i=1,16 do
            num[i]=0
        end
        has=0
        score=0
        Re()
    end
end

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于鸢尾花数据集的逻辑回归分类实践

基于鸢尾花数据集的逻辑回归分类实践 重要知识点 逻辑回归 原理简介&#xff1a; Logistic回归虽然名字里带“回归”&#xff0c;但是它实际上是一种分类方法&#xff0c;主要用于两分类问题&#xff08;即输出只有两种&#xff0c;分别代表两个类别&#xff09;&#xff0c…

Gaussian-Splatting 训练并导入Unity中

这个周末玩点啥~&#x1f41e; &#x1f354;资源下载&#x1f365;环境安装&#x1f4a1;安装C编译工具&#x1f4a1;安装Python&#x1f4a1;安装CUDA&#x1f4a1;添加ffmpeg到环境变量Path&#x1f4a1;pytorch安装&#x1f4a1;tqdm 安装&#x1f4a1;diff-gaussian-raste…

Kubernetes(K8S)快速入门

概述 在本门课程中&#xff0c;我们将会学习K8S一些非常重要和核心概念&#xff0c;已经操作这些核心概念对应组件的相关命令和方式。比如Deploy部署&#xff0c;Pod容器&#xff0c;调度器&#xff0c;Service服务&#xff0c;Node集群节点&#xff0c;Helm包管理器等等。 在…

学习C语言可以从以下几个方面入手

学习C语言可以从以下几个方面入手&#xff1a; 了解基础知识&#xff1a;首先&#xff0c;你需要了解C语言的基本语法和规则&#xff0c;包括变量、数据类型、运算符、控制结构等。可以通过阅读相关的教材或在线教程来学习这些基础知识。动手实践&#xff1a;理论知识的学习是…

算法通关第二十关-青铜挑战认识图结构

大家好我是苏麟 , 今天来聊聊图结构 . 我们平时在工作、学习中会大量使用图结构&#xff0c;不过呢在使用代码进行具体实现的时候极少使用图&#xff0c;主要是图里容易产生环&#xff0c;难以处理。 在算法里&#xff0c;考察图也不是很多&#xff0c;主要是图的表示非常复杂&…

Linux的进程概念、进程标识符、进程状态

一、上期回顾 在我们上周简单了解完冯诺伊曼体系结构和操作系统&#xff0c;知道了外设和CPU之间的数据交流必须要通过内存&#xff0c;操作系统是一个对软硬件资源做管理的软件&#xff0c;本质是对数据做管理&#xff0c;在语言层面就是对数据结构做管理&#xff0c;进行增删…

基于STM32的DS1302实时时钟模块应用

DS1302是一款低功耗的实时时钟芯片&#xff0c;被广泛应用于各种电子产品中。它具有准确计时、多种时间格式表示、定时报警等功能&#xff0c;适用于记录时间、日期和闹钟。在本文中&#xff0c;我们将介绍如何在基于STM32的开发环境中使用DS1302实时时钟模块&#xff0c;并给出…

傻瓜式教学Docker 使用docker compose部署 php nginx mysql

首先你可以准备这个三个服务,也可以在docker compose 文件中 直接拉去指定镜像,这里演示的是镜像服务已经在本地安装好了,提供如下: PHP # 设置基础镜像 FROM php:8.2-fpm# install dependencies RUN apt-get update && apt-get install -y \vim \libzip-dev \libpng…

基于稀疏表示的小波变换多光谱图像融合算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 小波变换融合 PCA融合 基于稀疏表示的小波变换多光谱图像融合算法 性能指标对比 2.算法运行软件版本 matlab2022a 3.部分核心程序 ...........…

java八股 spring + mybatis

Spring常用注解&#xff08;绝对经典&#xff09;_spring注解-CSDN博客 框架篇-02-Spring-单例bean是线程安全的吗_哔哩哔哩_bilibili 1.spring.bean 单例 线程不安全 2.AOP 项目里可以说记录用户登录日志&#xff0c;利用request去获取姓名、ip、、请求方式、url&#xff0…

ros2中gazebo安装的注意事项

Install From source&#xff08;推荐安装Fortress版本&#xff0c;好像很方便&#xff09; ROS Be sure youve installed ROS Humble (at least ROS-Base). More ROS dependencies will be installed below. Gazebo Install either Edifice, Fortress, or Garden.(没有har…

MFC 运行时类信息机制

目录 运行时类信息机制概述 测试 宏代换分析 结构体 CRuntimeclass 函数 GetRuntimeClass() 总结 执行过程分析 运行时类信息机制概述 在程序运行过程中可以获知对象的类的相关信息&#xff08;例如∶对象是否属于某个类) 如何使用&#xff1f; 类必须派生自CObject类…

MFC 动态创建机制

目录 动态创建机制概述 代码测试分析 执行过程 总结 动态创建机制概述 MFC 动态创建机制是 MFC 中的一项重要功能&#xff0c;它允许开发者在运行时动态创建和管理窗口控件。通过动态创建机制&#xff0c;开发者可以根据需要在程序运行过程中创建、显示和销毁窗口&#xf…

【K8S in Action】服务:让客户端发现pod 并与之通信(2)

一 通过Ingress暴露服务 Ingress (名词&#xff09; 一一进入或进入的行为&#xff1b;进入的权利&#xff1b;进入的手段或地点&#xff1b;入口。一个重要的原因是每个 LoadBalancer 服务都需要自己的负载均衡器&#xff0c; 以及 独有的公有 IP 地址&#xff0c; 而 Ingres…

基于STM32的DS1302实时时钟模块应用及原理介绍

在嵌入式系统中&#xff0c;实时时钟模块是一个常见的功能模块&#xff0c;用于记录和管理系统的时间信息。DS1302是一款低功耗、具有多种功能的实时时钟芯片&#xff0c;被广泛应用于各种电子产品中。本文将介绍基于STM32微控制器的DS1302实时时钟模块的应用及原理&#xff0c…

案例163:基于微信小程序的校园二手交易平台系统设计与开发

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

快速入门学习定时任务框架-xxljob

定时任务框架-xxljob 简介 主要用于分布式任务调度&#xff0c;可以将任务调度和执行分布在多个节点上。它提供了一个集中式的管理平台&#xff0c;支持动态添加、修改、删除任务&#xff0c;以及任务的分片执行&#xff0c;确保任务在分布式环境中的高可用性的一个框架 spr…

OSI 七层参考模型及TCP/IP 四层模型

OSI 七层参考模型 七层模型&#xff0c;亦称 OSI &#xff08; Open System Interconnection &#xff09;参考模型&#xff0c;即开放式系统互联。参考模型是国际标准化组织&#xff08;ISO &#xff09;制定的一个用于计算机或通信系统间互联的标准体系&#xff0c;一般称为…

在使用 npm install的时候提示node-sass command faile 解决方案

在使用npm install的时候错误提示node-sass 相关的。错误信息如下图&#xff1a; 解决方法&#xff08;PS&#xff1a;凯哥的不适用&#xff09; 出现这种问题基本是由于node版本与sass版本不匹配导致的 方案1&#xff1a;卸载node&#xff0c;安装对应版本 方案2&#xff1…

基于Arduino和HC-SR04的超声波测距系统设计

本文介绍了如何使用Arduino和HC-SR04超声波传感器设计并构建一个简单的超声波测距系统。我们将详细讨论硬件连线和编程步骤&#xff0c;并提供完整的Arduino代码。此系统可以应用于各种需要测量距离的项目&#xff0c;例如智能车辆、机器人和安防系统。 引言&#xff1a; 超声…