用python写一个图形游戏
下面是一个用Python编写的简单图形游戏的示例代码:
import pygame
import random
# 初始化游戏
pygame.init()
# 设置窗口尺寸
width, height = 800, 600
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("图形游戏")
# 设置颜色
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
# 玩家初始位置和速度
player_pos = [width/2, height-50]
player_speed = 10
# 创建敌人
enemy_size = 50
enemy_pos = [random.randint(0, width-enemy_size), 0]
enemy_list = [enemy_pos]
# 设置分数
score = 0
# 设置游戏结束标志
game_over = False
# 游戏主循环
clock = pygame.time.Clock()
while not game_over:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
if event.type == pygame.KEYDOWN:
x = player_pos[0]
if event.key == pygame.K_LEFT:
x -= player_speed
elif event.key == pygame.K_RIGHT:
x += player_speed
player_pos[0] = x
# 更新玩家位置
player_pos[0] += player_speed
if player_pos[0] < 0:
player_pos[0] = 0
elif player_pos[0] > width - 50:
player_pos[0] = width - 50
# 更新敌人位置
for idx, enemy_pos in enumerate(enemy_list):
if enemy_pos[1] >= 0 and enemy_pos[1] < height:
enemy_pos[1] += 10
else:
enemy_list.pop(idx)
score += 1
# 生成新敌人
if len(enemy_list) < 10:
x = random.randint(0, width-enemy_size)
y = 0
enemy_list.append([x, y])
# 碰撞检测
for enemy_pos in enemy_list:
if enemy_pos[1] >= player_pos[1] and enemy_pos[1] <= player_pos[1]+50:
if enemy_pos[0] >= player_pos[0] and enemy_pos[0] <= player_pos[0]+50:
game_over = True
# 绘制游戏界面
screen.fill(BLACK)
# 绘制玩家
pygame.draw.rect(screen, RED, (player_pos[0], player_pos[1], 50, 50))
# 绘制敌人
for enemy_pos in enemy_list:
pygame.draw.rect(screen, BLUE, (enemy_pos[0], enemy_pos[1], enemy_size, enemy_size))
# 显示分数
font = pygame.font.Font(None, 36)
text = font.render("Score: "+str(score), True, WHITE)
screen.blit(text, (10, 10))
# 更新显示
pygame.display.update()
# 设置游戏帧率
clock.tick(30)
# 游戏结束后显示得分
font = pygame.font.Font(None, 72)
text = font.render("Game Over", True, WHITE)
screen.blit(text, (width/2 - text.get_width()/2, height/2 - text.get_height()/2))
text = font.render("Score: "+str(score), True, WHITE)
screen.blit(text, (width/2 - text.get_width()/2, height/2 - text.get_height()/2 + 100))
pygame.display.update()
# 游戏结束,等待用户退出
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
该游戏的简单规则是:玩家控制一个红色方块在屏幕底部移动,避免与从屏幕顶部随机下落的蓝色方块碰撞。玩家通过躲避蓝色方块来积累分数,当玩家与蓝色方块发生碰撞时游戏结束,最后显示得分
原文地址: http://www.cveoy.top/t/topic/it66 著作权归作者所有。请勿转载和采集!