Python2048小游戏核心算法(python系列26)

前言:做核心算法之前我们可以玩一玩这个小游戏来了解一下规则。2048在线试玩

运行效果:

 

代码案例:

# 2048小游戏# 1.将列表中零移动到列表的末尾
def move_zeroes():x = 0for i in range(len(list_nums)):if list_nums[i] != 0:list_nums[x], list_nums[i] = list_nums[i], list_nums[x]x += 1# 2.将相邻相等的合并
def merge():move_zeroes()for i in range(len(list_nums) - 1):if list_nums[i] == list_nums[i + 1]:list_nums[i] *= 2list_nums.pop(i + 1)list_nums.append(0)# 向左移动
def move_left():global list_numsfor item in list_map:list_nums = itemmerge()# 向左移动
def move_right():global list_numsfor item in list_map:list_nums = item[::-1]merge()item[::-1] = list_numsdef transpose():global list_maplist_map = list((list(item) for item in zip(*list_map)))# 向上移动
def move_up():transpose()move_left()transpose()# 向上移动
def move_down():transpose()move_right()transpose()def select_num():show_all()num = input("请操作(wsad):")if num == 'w':move_up()show_all()elif num =='s':move_down()show_all()elif num == 'a':move_left()show_all()elif num == 'd':move_right()show_all()def show_all():for item in list_map:for i in item:print(i, end='\t')print()if __name__ == '__main__':list_nums = None  # type:list | Nonelist_map = [[2, 0, 2, 0],[0, 2, 0, 2],[4, 0, 4, 0],[0, 2, 0, 2]]while True:select_num()print("---------------------")

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

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

相关文章

“单项突出”的赢双科技IPO加速,比亚迪是最强助力?

近日,新能源汽车核心部件供应商赢双科技首次递表科创板,其凭借旋转变压器产品就坐稳了新能源车企主要供应商的地位,从核心业务及业绩情况来看,赢双科技不愧为“单项冠军”。 据悉,赢双科技本次IPO拟募资8.47亿元&…

两种MinIO分布式集群部署方式

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 相关文章推荐: 对象存储MinIO的简介与部署 记录一次跨越16个月的minio版本升级与数据迁移 MinIO集群怎么接入Prometh…

文字识别与光学字符识别有什么区别?

随着科技的不断发展,文字识别和光学字符识别技术已经成为我们日常生活和工作中不可或缺的一部分。然而,许多人对于这两者之间的区别并不十分清楚。本文将详细探讨文字识别与光学字符识别之间的差异,以帮助读者更好地理解这两种技术。 文字识…

Unity组件开发--相机跟随角色和旋转

1.相机跟随组件,节点: 2.相机跟随组件脚本: using System; using System.Collections; using System.Collections.Generic; using Unity.Burst.Intrinsics; using UnityEngine; using UnityEngine.UI;public class CameraFollow : Singleton&…

番茄工作法

番茄工作法是一种时间管理方法,主要适用于专注工作。它的基本步骤包括: 设定一个25分钟的闹钟。默念三二一(321法则),开始全身心投入工作。用专注的状态高效工作25分钟,不允许走神。如果做到了步骤3&#…

人工智能帮我建商城——文心一言代写基于jeecgboot的商城系统【springboot】

最近打算手搓一个jeecgboot的虚拟产品商城系统(无发货物流)【挖坑】 本文章会记录从0开发一个商城的主要内容。【使用文心一言深度参与制作和设计,甚至编程】 如果大家有什么意见,可以评论区讨论 本篇文章是一个新坑&#xff0…

[设计模式 Go实现] 结构型~享元模式

享元模式从对象中剥离出不发生改变且多个实例需要的重复数据,独立出一个享元,使多个对象共享,从而节省内存以及减少对象数量。 flyweight.go package flyweightimport "fmt"type ImageFlyweightFactory struct {maps map[string]…

Java——判空方式ObjectUtils/CollectionUtils/StringUtils及区别

目录 前言一、ObjectUtils.isEmpty二、CollectionUtils.isEmpty三、StringUtils.isEmpty四、StringUtils.isBlank四、!null后续敬请期待 前言 Java——判空方式ObjectUtils/CollectionUtils/StringUtils及区别 一、ObjectUtils.isEmpty 可判断String、集合、基本数据类型等数…

apk反编译修改教程系列---修改apk包名等信息 让一个应用拥有无限分身 手机电脑同步演示【九】

往期教程: apk反编译修改教程系列-----修改apk应用名称 任意修改名称 签名【一】 apk反编译修改教程系列-----任意修改apk版本号 版本名 防止自动更新【二】 apk反编译修改教程系列-----修改apk中的图片 任意更换apk桌面图片【三】 apk反编译修改教程系列---简单…

Rust 常用集合(上)

目录 1、使用 Vector 储存列表 1.1 新建 vector 1.2 更新 vector 1.3 读取 vector 的元素 1.4 遍历 vector 中的元素 1.5 使用枚举来储存多种类型 1.6 丢弃 vector 时也会丢弃其所有元素 2、使用字符串储存 UTF-8 编码的文本 2.1 什么是字符串? 2.2 新建字…

联邦机构如何利用人工智能加速 IT 系统现代化

尽管行业压力巨大,许多公共部门组织仍然需要依赖已有数十年历史的遗留 IT 系统,这些系统可能会增加安全风险和成本,导致人员短缺,并减缓开发团队交付关键任务应用程序的速度。 与此同时,考虑到这些大型系统中内存不安…

抖音蓝V账号矩阵怎么搭建?抖音蓝v号如何开通子帐户?

一、抖音蓝V是什么?有什么价值? 所谓抖音蓝V,就是抖音企业蓝V认证账号,2018年6月推出来的。 抖音蓝V有什么价值? 1)可以直接传递你的企业观或产品理念; 2)可以缩短你的企业与抖音…

微服务系统面经之四: 以秒杀系统为例 - 用户秒杀状态的通知【京东支付后端一面】

28 秒杀状态相关 28.1 对于一个秒杀系统,用户点击秒杀按钮后,怎么才能知道其秒杀状态?【京东支付后端一面】 对于秒杀系统,用户点击秒杀按钮后,确定其秒杀状态的过程通常包含以下几个关键步骤: 请求处理&…

设计模式的艺术P1基础—2.3 类之间的关系

设计模式的艺术P1基础—2.3 类之间的关系 在软件系统中,类并不是孤立存在的,类与类之间存在各种关系。对于不同类型的关系,UML提供了不同的表示方式 1.关联关系 关联(Association)关系是类与类之间最常用…

k8s yaml文件pod的生命周期

Pod是k8s中最小限额资源管理组件,也是最小化运行容器化的应用的资源管理对象。 Pod是一个抽象的概念,可以理解为一个或者多个容器化应用的集合。 在一个pod当中运行一个容器是最常用的方式。 在一个pod当中同时运行多个容器,在一个pod当中…

异常处理:全面覆盖与精细化管理的平衡

异常处理:全面覆盖与精细化管理的平衡 在软件开发中,异常处理是保证系统稳定性和用户体验的重要环节。对于是否应当全面覆盖所有异常并设立兜底机制,业界存在着两种主流思路:全面覆盖原则和精细化处理。如何在这两者间取得平衡&a…

WPF ComboBox限制输入长度

在WPF中&#xff0c;你可以通过两种方式来限制ComboBox的输入长度&#xff1a; 使用PreviewTextInput事件&#xff1a;你可以在这个事件的处理程序中检查输入文本的长度&#xff0c;如果超过最大长度则阻止输入。 <ComboBox PreviewTextInput"ComboBox_PreviewTextIn…

python插入排序

插入排序&#xff08;Insertion Sort&#xff09;是一种简单直观的排序算法。它的工作原理是通过构建有序序列&#xff0c;对于未排序数据&#xff0c;在已排序序列中从后向前扫描&#xff0c;找到相应位置并插入。插入排序在实现上&#xff0c;通常使用in-place排序&#xff0…

域名解析服务器:连接你与互联网的桥梁

域名解析服务器&#xff1a;连接你与互联网的桥梁 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;我们将探讨一个网络世界中至关重要却鲜为人知的角…

1.框架介绍项目环境配置与项目启动!

目录 1.框架开发方向:2.项目启动与环境搭建 1.框架开发方向: 1.前后端分离项目 2.纯后端项目 3.移动端开发uni-app(ios、Android、H5、微信小程序) 4.内容管理系统2.项目启动与环境搭建 1.安装node.js 下载地址可以用nvm安装 便于运行前端项目https://blog.csdn.net/qq_58647…