用Python写贪吃蛇和俄罗斯方块游戏

贪吃蛇游戏是一个经典的游戏,通过使用Python编程语言和Pygame游戏框架可以将其实现。

主要思路包括: 1.定义蛇的初始位置和长度。 2.定义食物的位置,使其能够被蛇吃到。 3.定义蛇的运动方向和移动速度。 4.蛇在吃到食物时增加长度,同时在撞到墙壁或自身时游戏结束。 5.每次更新窗口,绘制蛇和食物。 6.记录分数并在游戏结束时显示。

import pygame
import random

# 定义常量
SCREEN_WIDTH = 500
SCREEN_HEIGHT = 500
BLOCK_SIZE = 10

# 初始化pygame
pygame.init()
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("贪吃蛇")

# 定义颜色
BLACK = pygame.Color(0, 0, 0)
WHITE = pygame.Color(255, 255, 255)
RED = pygame.Color(255, 0, 0)
GREEN = pygame.Color(0, 255, 0)

# 定义蛇的初始状态
snake_position = [100, 50]
snake_body = [[100, 50], [90, 50], [80, 50]]
snake_direction = "RIGHT"

# 定义食物的位置
food_position = [random.randrange(1, (SCREEN_WIDTH // BLOCK_SIZE)) * BLOCK_SIZE,
                 random.randrange(1, (SCREEN_HEIGHT // BLOCK_SIZE)) * BLOCK_SIZE]

# 定义计分器
score = 0

# 更新窗口
def update_screen():
    global score
    screen.fill(BLACK)
    
    # 绘制蛇
    for position in snake_body:
        pygame

2.俄罗斯方块

import pygame
import random

pygame.init()
screen = pygame.display.set_mode((320, 480))
pygame.display.set_caption("俄罗斯方块")
font = pygame.font.SysFont(None, 30)

block_size = 20
time_interval = 500        
score = 0          
game_over = False          
clock = pygame.time.Clock() 

class Tetromino:
    def __init__(self, shape):
        self.color = random.choice(["red", "blue", "green", "yellow"])
        self.shape = shape
        self.x = 150
        self.y = 0
        
    def move_down(self):
        self.y += block_size

    def move_left(self):
        self.x -= block_size
        
    def move_right(self):
        self.x += block_size
        
    def rotate(self):
        self.shape = zip(*self.shape[::-1])
        
    def draw(self, surface):
        for row in range(4):
            for col in range(4):
                if self.shape[row][col] == "O":
                    pygame.draw.rect(surface, \
                                     pygame.Color(self.color), \
                                     pygame.Rect(self.x + col * block_size, self.y + row * block_size, block_size, block_size), \
                                     0)

shapes = ["I", "J", "L", "O", "S", "T", "Z"]
tetromino = Tetromino(random.choice(shapes))

while not game_over:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            game_over = True
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                tetromino.move_left()
            elif event.key == pygame.K_RIGHT:
                tetromino.move_right()
            elif event.key == pygame.K_DOWN:
                tetromino.move_down()
            elif event.key == pygame.K_UP:
                tetromino.rotate()

    screen.fill(pygame.Color("white"))

    pygame.draw.rect(screen, pygame.Color("black"), \
                     pygame.Rect(50, 0, block_size * 10, block_size * 20), \
                     1)
    
    tetromino.draw(screen)

    pygame.display.update()

    clock.tick(30)

各位大神有没有更好的建议呢?欢迎在下方留言。

转载请标明来源,谢谢。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值