bat小游戏代码大全_Python俄罗斯方块游戏代码

    本游戏共两个文件:blocks.py和main.py。blocks.py定义各类方块,main.py定义游戏画面。

222afba9262caa46f235a86c82632b7e.png

blocks.py

import randomfrom collections import namedtuplePoint = namedtuple('Point', 'X Y')Shape = namedtuple('Shape', 'X Y Width Height')Block = namedtuple('Block', 'template start_pos end_pos name next')# 方块形状的设计,我最初我是做成 4 × 4,因为长宽最长都是4,这样旋转的时候就不考虑怎么转了,就是从一个图形替换成另一个# 其实要实现这个功能,只需要固定左上角的坐标就可以了#更多小游戏请微信关注:Python代码大全# S形方块S_BLOCK = [Block(['.OO',                  'OO.',                  '...'], Point(0, 0), Point(2, 1), 'S', 1),           Block(['O..',                  'OO.',                  '.O.'], Point(0, 0), Point(1, 2), 'S', 0)]# Z形方块Z_BLOCK = [Block(['OO.',                  '.OO',                  '...'], Point(0, 0), Point(2, 1), 'Z', 1),           Block(['.O.',                  'OO.',                  'O..'], Point(0, 0), Point(1, 2), 'Z', 0)]# I型方块I_BLOCK = [Block(['.O..',                  '.O..',                  '.O..',                  '.O..'], Point(1, 0), Point(1, 3), 'I', 1),           Block(['....',                  '....',                  'OOOO',                  '....'], Point(0, 2), Point(3, 2), 'I', 0)]# O型方块O_BLOCK = [Block(['OO',                  'OO'], Point(0, 0), Point(1, 1), 'O', 0)]# J型方块J_BLOCK = [Block(['O..',                  'OOO',                  '...'], Point(0, 0), Point(2, 1), 'J', 1),           Block(['.OO',                  '.O.',                  '.O.'], Point(1, 0), Point(2, 2), 'J', 2),           Block(['...',                  'OOO',                  '..O'], Point(0, 1), Point(2, 2), 'J', 3),           Block(['.O.',                  '.O.',                  'OO.'], Point(0, 0), Point(1, 2), 'J', 0)]# L型方块L_BLOCK = [Block(['..O',                  'OOO',                  '...'], Point(0, 0), Point(2, 1), 'L', 1),           Block(['.O.',                  '.O.',                  '.OO'], Point(1, 0), Point(2, 2), 'L', 2),           Block(['...',                  'OOO',                  'O..'], Point(0, 1), Point(2, 2), 'L', 3),   
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是两个关于贪吃蛇游戏Python代码示例: 1. 百行Python代码实现贪吃蛇游戏: ```python import pygame import sys import random # 初始化游戏 pygame.init() # 设置游戏窗口大小 window_width = 800 window_height = 600 window_size = (window_width, window_height) window = pygame.display.set_mode(window_size) pygame.display.set_caption("贪吃蛇游戏") # 定义颜色 white = (255, 255, 255) black = (0, 0, 0) red = (255, 0, 0) green = (0, 255, 0) # 定义贪吃蛇的初始位置和大小 snake_size = 20 snake_x = window_width / 2 snake_y = window_height / 2 # 定义贪吃蛇的移动速度 snake_speed = 10 snake_x_change = 0 snake_y_change = 0 # 定义食物的初始位置和大小 food_size = 20 food_x = round(random.randrange(0, window_width - food_size) / 20) * 20 food_y = round(random.randrange(0, window_height - food_size) / 20) * 20 # 定义贪吃蛇的身体 snake_body = [] snake_length = 1 # 定义游戏结束的标志 game_over = False # 游戏主循环 while not game_over: for event in pygame.event.get(): if event.type == pygame.QUIT: game_over = True if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: snake_x_change = -snake_size snake_y_change = 0 elif event.key == pygame.K_RIGHT: snake_x_change = snake_size snake_y_change = 0 elif event.key == pygame.K_UP: snake_y_change = -snake_size snake_x_change = 0 elif event.key == pygame.K_DOWN: snake_y_change = snake_size snake_x_change = 0 # 更新贪吃蛇的位置 snake_x += snake_x_change snake_y += snake_y_change # 判断是否吃到食物 if snake_x == food_x and snake_y == food_y: food_x = round(random.randrange(0, window_width - food_size) / 20) * 20 food_y = round(random.randrange(0, window_height - food_size) / 20) * 20 snake_length += 1 # 绘制游戏窗口 window.fill(black) pygame.draw.rect(window, green, [food_x, food_y, food_size, food_size]) snake_head = [] snake_head.append(snake_x) snake_head.append(snake_y) snake_body.append(snake_head) if len(snake_body) > snake_length: del snake_body[0] for segment in snake_body[:-1]: if segment == snake_head: game_over = True for segment in snake_body: pygame.draw.rect(window, white, [segment[0], segment[1], snake_size, snake_size]) pygame.display.update() # 判断游戏是否结束 if snake_x < 0 or snake_x >= window_width or snake_y < 0 or snake_y >= window_height: game_over = True pygame.time.Clock().tick(snake_speed) # 退出游戏 pygame.quit() sys.exit() ``` 2. 使用set数据结构判断贪吃蛇是否咬到自身的代码: ```python def game_over(snake): broad_x, broad_y = snake.get_head() flag = 0 old = len(snake.item) new = len(set(snake.item)) if new < old: flag = 1 if broad_x == 0 or broad_x == BOARDWIDTH - 1: flag = 1 if broad_y == 0 or broad_y == BOARDHEIGHT - 1: flag = 1 if flag: return True else: return False ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值