iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >怎么在Python中利用Pygame实现一个俄罗斯方块游戏
  • 197
分享到

怎么在Python中利用Pygame实现一个俄罗斯方块游戏

2023-06-06 11:06:44 197人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

今天就跟大家聊聊有关怎么在python中利用Pygame实现一个俄罗斯方块游戏,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。源码:# coding : 

今天就跟大家聊聊有关怎么在python中利用Pygame实现一个俄罗斯方块游戏,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

源码

coding : utf-8#: pip install pygameimport randomimport sysimport pygame#: 颜色定义COLOR_WHITE = (255, 255, 255)COLOR_BLACK = (0, 0, 0)class Block: """小块""" width = 24 height = 24 @staticmethod def draw(s, left, top, color, bg_color):  pygame.draw.rect(s, bg_color, pygame.Rect(left, top, Block.width, Block.height))  pygame.draw.rect(s, color, pygame.Rect(left, top, Block.width - 1, Block.height - 1))class Building: """积木""" def __init__(self):  """  方块的7种基本形状  每次初始化随机选择一个形状  @:return True / False  """  self.fORM = random.choice(   [    [     [0, 0, 0, 0, 0],     [0, 0, 1, 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],     [1, 1, 1, 1, 0],     [0, 0, 0, 0, 0],     [0, 0, 0, 0, 0]    ],    [     [0, 0, 0, 0, 0],     [0, 1, 1, 0, 0],     [0, 0, 1, 1, 0],     [0, 0, 0, 0, 0],     [0, 0, 0, 0, 0]    ],    [     [0, 0, 0, 0, 0],     [0, 0, 1, 1, 0],     [0, 1, 1, 0, 0],     [0, 0, 0, 0, 0],     [0, 0, 0, 0, 0]    ],    [     [0, 0, 0, 0, 0],     [0, 1, 1, 0, 0],     [0, 0, 1, 0, 0],     [0, 0, 1, 0, 0],     [0, 0, 0, 0, 0]    ],    [     [0, 0, 0, 0, 0],     [0, 0, 1, 1, 0],     [0, 0, 1, 0, 0],     [0, 0, 1, 0, 0],     [0, 0, 0, 0, 0]    ],    [     [0, 0, 0, 0, 0],     [0, 1, 1, 0, 0],     [0, 1, 1, 0, 0],     [0, 0, 0, 0, 0],     [0, 0, 0, 0, 0]    ]   ]) def __getitem__(self, pos):  return self.form[pos] def __setitem__(self, key, value):  self.form[key] = valueclass Layout: """棋盘""" def __init__(self):  self.block_x_count = 16;  self.block_y_count = 22;  self.layout = [[0 if 1 < i < self.block_x_count - 2 and j < self.block_y_count - 2 else 1      for i in range(self.block_x_count)] for j in range(self.block_y_count)] @property def size(self):  """返回棋盘屏幕大小(width,height)"""  return (self.block_x_count * Block.width, self.block_y_count * Block.height) def create_new_building(self):  """  创建新的积木,初始化位置为第5,0格, 速度为4  :return: 返回是否无空间创建了  """  self.building = Building()  self.building_left, self.building_top = 5, 0 #  self.drop_speed = 3  print(self.test_building_touch_wall())  return self.test_building_touch_wall()  @property def speed(self):  return self.drop_speed def test_building_touch_wall(self, x_offset=0, y_offset=0):  """  积木是否已经触底/墙壁  具体操作:  判断积木最后一排的1,是否在当前棋牌对应的位置是也是1  @:param x_offset: x的偏移量 移动时可以传入1/-1来判断  @:param y_offset: y的偏移量 正常下落时可以传入1来判断  """  for i in range(4, -1, -1):   for j in range(5):    if self.building[i][j]:     if self.layout[i + self.building_top + y_offset][j + self.building_left + x_offset]:      return True  return False def move_left_right(self, x):  """  左右移动  @:param x: 移动量 x_offset  """  #: 移动时不能撞墙  if not self.test_building_touch_wall(x_offset=x):   self.building_left += x def down_build(self):  """ 盒子的自动下移 """  self.building_top += 1 def direct_down(self):  """ 手动快速降落 """  self.drop_speed = 50 def convert_building(self):  """  * 扭转盒子的总方位 (右转)  具体操作:  把第一竖排的倒序给第一横排的  把第二竖排的倒序给第二横排的  后面同理.  """  new_box = [[0 for i in range(5)] for j in range(5)]  for i in range(5):   for j in range(4, -1, -1):    new_box[i][j] = self.building[4 - j][i]  self.building = new_box def clear_full_lines(self):  """消除满行的所有行"""  new_layout = [[0 if 1 < i < self.block_x_count - 2 and j < self.block_y_count - 2 else 1      for i in range(self.block_x_count)] for j in range(self.block_y_count)]  row_len = self.block_x_count - 4  new_row = self.block_y_count - 2 - 1  for cur_row in range(self.block_y_count - 2 - 1, 0, -1):   if sum(self.layout[cur_row][2:self.block_x_count - 2]) < row_len:    new_layout[new_row] = self.layout[cur_row]    new_row -= 1  self.layout = new_layout def put_building_to_layout(self):  """将积木放到棋盘里"""  for i in range(4, -1, -1):   for j in range(5):    if self.building[i][j]:     self.layout[i + self.building_top][j + self.building_left] = 1  #: 这里会调用消除函数  self.clear_full_lines() def draw_building(self, s):  """  显示积木  @:param s : pygame = screen   """  cur_left, cur_top = self.building_left * Block.width, self.building_top * Block.height  for i in range(5):   for j in range(5):    # 只画积木实体,不管盒子本身    if self.building[j][i]:     Block.draw(s, cur_left + i * Block.width, cur_top + j * Block.height, COLOR_BLACK, COLOR_WHITE) def draw(self, s):  """  显示棋盘  @:param s : pygame = screen   """  for i in range(self.block_x_count):   for j in range(self.block_y_count):    if self.layout[j][i] == 0:     Block.draw(s, i * Block.width, j * Block.height, COLOR_WHITE, COLOR_BLACK)    else:     Block.draw(s, i * Block.width, j * Block.height, COLOR_BLACK, COLOR_WHITE)# -------------------------------------------------------------------# Main# -------------------------------------------------------------------def main(): #: 初始化 while True:  layout = Layout()  layout.create_new_building()  pygame.init()  pygame.display.set_caption('俄罗斯方块')  screen = pygame.display.set_mode((layout.size), 0, 32)  is_over = False  #: 单局游戏循环开始 [结束后直接重新开始]  while not is_over:   #: 处理游戏消息   for e in pygame.event.get():    if e.type == pygame.QUIT:     sys.exit()    #: 处理按键    if e.type == pygame.KEYDOWN:     if e.key == pygame.K_UP:      layout.convert_building()     if e.key == pygame.K_DOWN:      layout.direct_down()     if e.key == pygame.K_LEFT:      layout.move_left_right(-1)     if e.key == pygame.K_RIGHT:      layout.move_left_right(1)   #: 是否碰触底部地面了,是 -> 融合背景 否 -> 继续下落   if layout.test_building_touch_wall(y_offset=1):    layout.put_building_to_layout()    is_over = layout.create_new_building()   else:    layout.down_build()   #: 绘制   layout.draw(screen)   layout.draw_building(screen)   pygame.display.update()   #: 速度   pygame.time.Clock().tick(layout.speed)if __name__ == '__main__': main()

看完上述内容,你们对怎么在Python中利用Pygame实现一个俄罗斯方块游戏有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网Python频道,感谢大家的支持。

--结束END--

本文标题: 怎么在Python中利用Pygame实现一个俄罗斯方块游戏

本文链接: https://www.lsjlt.com/news/246419.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么在Python中利用Pygame实现一个俄罗斯方块游戏
    今天就跟大家聊聊有关怎么在Python中利用Pygame实现一个俄罗斯方块游戏,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。源码:# coding : ...
    99+
    2023-06-06
  • Python+Pygame实战之俄罗斯方块游戏的实现
    目录导语一、运行环境二、代码展示三、效果展示导语 俄罗斯方块,作为是一款家喻户晓的游戏,陪伴70、80甚至90后,度过无忧的儿时岁月 它上手简单能自由组合、拼接技巧也很多。 你知道么...
    99+
    2022-12-28
    Python Pygame俄罗斯方块游戏 Python 俄罗斯方块 Python Pygame 游戏
  • 怎么在HTML5中使用WebGL实现一个俄罗斯方块游戏
    怎么在HTML5中使用WebGL实现一个俄罗斯方块游戏?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。代码实现首先,先完成 2D 小游戏在查看官方文档的过程中,了解到 HT 的组...
    99+
    2023-06-09
  • 利用Java编写一个俄罗斯方块小游戏
    这期内容当中小编将会给大家带来有关利用Java编写一个俄罗斯方块小游戏,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java游戏俄罗斯方块的实现实例    &nbs...
    99+
    2023-05-31
    java ava
  • 利用JetpackCompose实现经典俄罗斯方块游戏
    目录可组合函数游戏机身 - TetrisBody游戏按钮 - TetrisButton游戏屏幕 - TetrisScreen调度器 - TetrisViewModel项目地址你的童年...
    99+
    2024-04-02
  • python实现简单俄罗斯方块游戏
    本文实例为大家分享了python实现简单俄罗斯方块游戏的具体代码,供大家参考,具体内容如下 import pygame,sys,random,time all_block = [[...
    99+
    2024-04-02
  • 怎么用Javascript实现俄罗斯方块游戏
    这篇文章主要介绍“怎么用Javascript实现俄罗斯方块游戏”,在日常操作中,相信很多人在怎么用Javascript实现俄罗斯方块游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大...
    99+
    2024-04-02
  • C++实现俄罗斯方块小游戏
    本文实例为大家分享了C++实现俄罗斯方块小游戏的具体代码,供大家参考,具体内容如下 操作说明: D F:左右旋转 J  L:左右移动 E(一堆键都行): 加快下落速度 空格...
    99+
    2024-04-02
  • C/C++实现俄罗斯方块游戏
    目录一、游戏效果展示二、完整代码三、所需开发环境四、具体项目实现①游戏欢迎界面 welcome( )②游戏背景 initGameScreen( ) ③方块表示 int bl...
    99+
    2024-04-02
  • 使用python怎么制作一个俄罗斯方块小游戏
    这期内容当中小编将会给大家带来有关使用python怎么制作一个俄罗斯方块小游戏,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Pyth...
    99+
    2023-06-14
  • JavaScript canvas实现俄罗斯方块游戏
    俄罗斯方块是个很经典的小游戏,也尝试写了一下。不过我想用尽量简洁逻辑清晰的代码实现。不用过多的代码记录下落方块的模型,或者记录每一个下落方块的x,y。想了下面的思路,然后发现这样很写...
    99+
    2024-04-02
  • Python实现简单的俄罗斯方块游戏
    本文实例为大家分享了Python实现俄罗斯方块游戏的具体代码,供大家参考,具体内容如下 玩法:童年经典,普通模式没啥意思,小时候我们都是玩加速的。 源码分享: import o...
    99+
    2024-04-02
  • python是怎么实现简单俄罗斯方块游戏
    本篇文章为大家展示了python是怎么实现简单俄罗斯方块游戏,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,Pyth...
    99+
    2023-06-26
  • 使用JS+CSS实现俄罗斯方块游戏
    目录前提:设置HTML结构:创建CSS样式:编写JavaScript代码:响应式设计:添加触摸事件支持:测试并优化:代码示例:前提: 要在网页上实现一个适用于PC端和移动端的俄罗斯方...
    99+
    2023-05-14
    JS+CSS JS+CSS实现俄罗斯方块
  • 基于Matlab实现俄罗斯方块游戏
    我最早写的一个matlab小游戏 写的可能不够简洁,但还有可玩性, 先发上来,以后可能改进或出教程。 大家自己探索吧(外挂是哪个按键,更改颜色是哪个按键) 游戏效果 完整代码 fu...
    99+
    2024-04-02
  • c++实现俄罗斯方块游戏代码
    俄罗斯方块c++ 1.创建项目2.总共需要创建两个文件,一个main.cpp,一个是elsfk2.h。本人使用的编译器是vs2019. 3.在项目的源文件夹下创建一个文件夹image...
    99+
    2024-04-02
  • c++如何实现俄罗斯方块游戏
    这篇文章主要介绍“c++如何实现俄罗斯方块游戏”,在日常操作中,相信很多人在c++如何实现俄罗斯方块游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”c++如何实现俄罗斯方块游戏”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-22
  • Java实现经典俄罗斯方块游戏
    目录前言主要设计功能截图代码实现总结前言 俄罗斯方块是一个最初由阿列克谢帕吉特诺夫在苏联设计和编程的益智类视频游戏。 《俄罗斯方块》的基本规则是移动、旋转和摆放游戏自动输出的各种方块...
    99+
    2024-04-02
  • Python完整实现俄罗斯方块游戏全解
    目录1俄罗斯方块游戏2Python代码实现 2.1展现2.2Python代码1 俄罗斯方块游戏 《俄罗斯方块》原本是前苏联科学家阿列克谢·帕基特诺夫所开发的教...
    99+
    2024-04-02
  • 怎么用JavaScript做俄罗斯方块游戏
    这篇文章主要为大家展示了“怎么用JavaScript做俄罗斯方块游戏”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么用JavaScript做俄罗斯方块游戏”这篇文章吧。最终游戏效果一开始我们先...
    99+
    2023-06-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作