当前位置: 首页 > news >正文

网站服务器购买价格大连网站制作赞ls15227

网站服务器购买价格,大连网站制作赞ls15227,深圳好的网站建设公,程序员不是做网站的删掉基础图标新建assets、scenes、scripts文件夹 俄罗斯方块的每种方块都是由四个小方块组成的#xff0c;很适合放在网格地图中 比如网格地图是宽10列#xff0c;高20行 要实现网格的对齐和下落 Node2D节点 新建一个Node2D 添加2个TileMapLayer 一个命名为Board…删掉基础图标新建assets、scenes、scripts文件夹 俄罗斯方块的每种方块都是由四个小方块组成的很适合放在网格地图中 比如网格地图是宽10列高20行 要实现网格的对齐和下落 Node2D节点 新建一个Node2D 添加2个TileMapLayer 一个命名为Board另一个命名为Active 给Board新建一个图块库 图块大小为32乘32 下方打开TileSet 添加图块 选择TileMap和第八个灰色的图块 选择矩形 画一个12乘22的网格 再用鼠标右键点击划掉中间的部分 Node2D脚本 添加脚本将其添加到scripts文件夹里 extends Node2D # 此脚本扩展自Node2D作为游戏的主节点# 定义 I 型俄罗斯方块的所有旋转状态每种状态由方块相对原点的坐标组成 var i_tetromino: Array [[Vector2i(0, 1), Vector2i(1, 1), Vector2i(2, 1), Vector2i(3, 1)], # 0 degrees[Vector2i(2, 0), Vector2i(2, 1), Vector2i(2, 2), Vector2i(2, 3)], # 90 degrees[Vector2i(0, 2), Vector2i(1, 2), Vector2i(2, 2), Vector2i(3, 2)], # 180 degrees[Vector2i(1, 0), Vector2i(1, 1), Vector2i(1, 2), Vector2i(1, 3)] # 270 degrees ]# 定义 T 型俄罗斯方块的所有旋转状态 var t_tetromino: Array [[Vector2i(1, 0), Vector2i(0, 1), Vector2i(1, 1), Vector2i(2, 1)], # 0 degrees[Vector2i(1, 0), Vector2i(1, 1), Vector2i(2, 1), Vector2i(1, 2)], # 90 degrees[Vector2i(0, 1), Vector2i(1, 1), Vector2i(2, 1), Vector2i(1, 2)], # 180 degrees[Vector2i(1, 0), Vector2i(0, 1), Vector2i(1, 1), Vector2i(1, 2)] # 270 degrees ]# 定义 O 型俄罗斯方块的所有旋转状态所有旋转状态相同 var o_tetromino: Array [[Vector2i(0, 0), Vector2i(1, 0), Vector2i(0, 1), Vector2i(1, 1)], # All rotations are the same[Vector2i(0, 0), Vector2i(1, 0), Vector2i(0, 1), Vector2i(1, 1)], # All rotations are the same[Vector2i(0, 0), Vector2i(1, 0), Vector2i(0, 1), Vector2i(1, 1)], # All rotations are the same[Vector2i(0, 0), Vector2i(1, 0), Vector2i(0, 1), Vector2i(1, 1)] # All rotations are the same ]# 定义 Z 型俄罗斯方块的所有旋转状态 var z_tetromino: Array [[Vector2i(0, 0), Vector2i(1, 0), Vector2i(1, 1), Vector2i(2, 1)], # 0 degrees[Vector2i(2, 0), Vector2i(1, 1), Vector2i(2, 1), Vector2i(1, 2)], # 90 degrees[Vector2i(0, 1), Vector2i(1, 1), Vector2i(1, 2), Vector2i(2, 2)], # 180 degrees[Vector2i(1, 0), Vector2i(0, 1), Vector2i(1, 1), Vector2i(0, 2)] # 270 degrees ]# 定义 S 型俄罗斯方块的所有旋转状态 var s_tetromino: Array [[Vector2i(1, 0), Vector2i(2, 0), Vector2i(0, 1), Vector2i(1, 1)], # 0 degrees[Vector2i(1, 0), Vector2i(1, 1), Vector2i(2, 1), Vector2i(2, 2)], # 90 degrees[Vector2i(1, 1), Vector2i(2, 1), Vector2i(0, 2), Vector2i(1, 2)], # 180 degrees[Vector2i(0, 0), Vector2i(0, 1), Vector2i(1, 1), Vector2i(1, 2)] # 270 degrees ]# 定义 L 型俄罗斯方块的所有旋转状态 var l_tetromino: Array [[Vector2i(2, 0), Vector2i(0, 1), Vector2i(1, 1), Vector2i(2, 1)], # 0 degrees[Vector2i(1, 0), Vector2i(1, 1), Vector2i(1, 2), Vector2i(2, 2)], # 90 degrees[Vector2i(0, 1), Vector2i(1, 1), Vector2i(2, 1), Vector2i(0, 2)], # 180 degrees[Vector2i(0, 0), Vector2i(1, 0), Vector2i(1, 1), Vector2i(1, 2)] # 270 degrees ]# 定义 J 型俄罗斯方块的所有旋转状态 var j_tetromino: Array [[Vector2i(0, 0), Vector2i(0, 1), Vector2i(1, 1), Vector2i(2, 1)], # 0 degrees[Vector2i(1, 0), Vector2i(2, 0), Vector2i(1, 1), Vector2i(1, 2)], # 90 degrees[Vector2i(0, 1), Vector2i(1, 1), Vector2i(2, 1), Vector2i(2, 2)], # 180 degrees[Vector2i(1, 0), Vector2i(1, 1), Vector2i(0, 2), Vector2i(1, 2)] # 270 degrees ]# 将所有俄罗斯方块的数组存入 tetrominoes 数组 var tetrominoes: Array [i_tetromino, t_tetromino, o_tetromino, z_tetromino, s_tetromino, l_tetromino, j_tetromino]# 创建所有方块的副本用于重置 var all_tetrominoes: Array tetrominoes.duplicate()# 设置游戏区域的列数和行数 const COLS: int 10 const ROWS: int 20# 定义初始方块生成的起始位置 const START_POSITION: Vector2i Vector2i(5, 1) # 当前方块的位置 var current_position: Vector2i# 当前和下一个方块的形状及旋转角度 var cunrrent_tetromino_type: Array var next_tetromino_type: Array # 当前旋转状态 var rotation_index: int 0 # 当前方块的形态 var active_tetromino: Array []# Tile ID 和图块信息 var tile_id: int 0 var piece_atlas: Vector2i var next_piece_atlas: Vector2i# 连接节点 onready var board_layer: TileMapLayer $Board onready var active_layer: TileMapLayer $Active# 准备函数在游戏开始时调用 func _ready() - void:start_new_game()# 开始新的游戏 func start_new_game() - void:# 随机选择一个方块类型cunrrent_tetromino_type choose_tetromino()# 计算方块在 Tileset 中的图块索引piece_atlas Vector2i(all_tetrominoes.find(cunrrent_tetromino_type), 0)# 初始化方块的位置和显示initialize_tetromino()# 随机选择一个方块类型 func choose_tetromino() - Array:var selected_tetromino: Array# 如果当前类型池不为空if not tetrominoes.is_empty():# 打乱类型池顺序tetrominoes.shuffle()# 取出第一个类型selected_tetromino tetrominoes.pop_front()else:# 重置类型池tetrominoes all_tetrominoes.duplicate()tetrominoes.shuffle()selected_tetromino tetrominoes.pop_front()return selected_tetromino# 初始化当前方块 func initialize_tetromino() - void:# 将当前方块的位置设置为起始位置通常在游戏顶部中央current_position START_POSITION# 获取当前方块在当前旋转状态下的形态active_tetromino cunrrent_tetromino_type[rotation_index]# 渲染当前方块到网格层显示方块render_tetromino(active_tetromino, current_position, piece_atlas)# 渲染俄罗斯方块到指定位置 func render_tetromino(tetromino: Array, position: Vector2i, atlas: Vector2i) - void:# 遍历当前方块的所有方块单元每个单元以 Vector2i 表示for block in tetromino:# 使用方块的全局位置初始位置加单元偏移量设置网格层的对应单元# - position block: 当前单元格在网格中的全局位置# - tile_id: 当前方块的唯一标识符用于区分不同类型的方块# - atlas: 方块对应的图块信息用于绘制特定样式board_layer.set_cell(position block, tile_id, atlas) 这段代码定义了一个俄罗斯方块游戏的基础框架用于管理游戏中的方块数据、游戏区域以及方块的生成和显示逻辑。 核心思想 方块表示与旋转 每种俄罗斯方块由其所有可能的旋转状态定义0°、90°、180°、270°这些状态通过Vector2i表示的相对坐标来描述。动态方块池管理 使用一个池子管理可用的方块类型每次随机从池中取出一个方块当池为空时重新填充并随机打乱顺序。游戏区域 游戏区域被定义为一个网格玩家的目标是控制方块在网格内移动、旋转并最终填满一行消除得分。图块渲染 使用TileMapLayer将方块的形状和位置显示到游戏画面中。
http://www.laogonggong.com/news/127237.html

相关文章:

  • 做商城网站多少钱手机小程序在哪里找
  • 成都公司网站设计做铝锭的网站
  • 北京保障房建设项目网站吴江和城乡建设局网站
  • 网站建设丨找王科杰信誉万能优化大师下载
  • 网站做推荐链接端口企业管理培训课程好卖吗
  • 网站收录不稳定青岛的网站建设公司
  • 创建网站代码是什么情况ui设计师证
  • 天津在线制作网站河南中原建设公司网站
  • 怎么用文本做网站工会网站群建设方案
  • 福州企业网站建站模板表白网页生成器手机版
  • 亚马逊如何做折扣网站的营销华强北是什么意思
  • 阿里云网站建设部署与发布视频济南网站建设山东聚搜网推荐
  • 做门户网站需要学什么知识中国网站备案信息查询
  • 常州 微网站scratch编程免费下载
  • 做么户网站怎么去前置审批网上卖建材的平台
  • 和老妇做爰视频网站手机视频做动画视频在线观看网站
  • 谁给推荐一个免费的好网站宁波网站推广工作室电话
  • 网站空间管理地址淄博的大型网站建设
  • 孝感 商务 网站建设网站流量
  • 网站ip过万常德网站建设全域云
  • 客户网站建设酒窖设计
  • 简易个人博客网站源码网页传奇手游官网
  • 南京网站设南京网站设计计汇点远程app下载安装
  • 营销网站建设要注意什么晋江seo
  • asp.net 4.0网站开...蓝盟it外包
  • 2023免费网站推广大全请人做ppt的网站
  • 无锡seo网站建设费用傻瓜使用模板建网站
  • 做婚介打么网站好网站开发项目视频教程
  • 郑州医疗网站建设视频付费网站建设
  • 斗牛网站开发龙岗个性化网站建设价格低