> 技术文档 > python炸鱼船

python炸鱼船

import pygame, random # 加载库from pygame.locals import *pygame.init()pygame.display.set_caption(\"炸渔船\")canvas = pygame.display.set_mode((700, 500))bg=pygame.image.load(\"bg.png\")bg=pygame.transform.scale(bg,(700,500))class Hero(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) #加载图片,修改大小,获取矩形,设置中心位置 self.image=[pygame.image.load(\"hero1.png\"),  pygame.image.load(\"hero2.png\")] # 列表的创建,列表元素的调用,列表的索引,列表切片 self.image=[pygame.transform.scale(self.image[0],(100,100)),  pygame.transform.scale(self.image[1],(100,100)) ] self.rect=self.image[0].get_rect() self.rect.center=350,135class Bullet(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image=pygame.image.load(\"bullet.png\") self.image=pygame.transform.scale(self.image,(30,100)) self.rect=self.image.get_rect() self.rect.center=100,100 self.speed=[0,5] def xianshi(self): canvas.blit(self.image,self.rect)danjia=pygame.sprite.Group()def handleEvent(): # 点叉叉关闭游戏界面 for event in pygame.event.get(): if event.type == QUIT: quit()life=0score=0nnn=0yuchuan=Hero()while True: canvas.fill((255, 255, 255)) canvas.blit(bg,(0,0)) font=pygame.font.SysFont(\"kaiti\",20) text=font.render(\"当前生命值:\"+str(life)+\"分数:\"+str(score),True,(255,0,0)) canvas.blit(text,(0,0)) canvas.blit(yuchuan.image[nnn],yuchuan.rect) kkk=pygame.key.get_pressed() if kkk[K_LEFT]: nnn=1 yuchuan.rect.left-=5 if kkk[K_RIGHT]: nnn=0 yuchuan.rect.left+=5 if kkk[K_SPACE]: bullet=Bullet() bullet.rect.center=yuchuan.rect.left+50,yuchuan.rect.top+150 danjia.add(bullet) for d in danjia: d.xianshi() d.rect=d.rect.move(d.speed) # d.rect.center=yuchuan.rect.center #类属性的调用 handleEvent() pygame.display.update()import pygameimport randomimport time# 初始化 Pygamepygame.init()# 游戏窗口设置WIDTH, HEIGHT = 640, 480window = 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)# 蛇与食物设置SNAKE_SIZE = 20snake = [[100, 100], [80, 100], [60, 100]] # 初始蛇身坐标food = [random.randrange(10, (WIDTH // SNAKE_SIZE)) * SNAKE_SIZE, random.randrange(10, (HEIGHT // SNAKE_SIZE)) * SNAKE_SIZE]direction = \"RIGHT\" # 初始方向score = 10# 游戏主循环clock = pygame.time.Clock()running = Truegame_over = Falsewhile running: clock.tick(5) # 控制游戏速度 # 处理事件 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYDOWN: if event.key == pygame.K_UP and direction != \"DOWN\": direction = \"UP\" elif event.key == pygame.K_DOWN and direction != \"UP\": direction = \"DOWN\" elif event.key == pygame.K_LEFT and direction != \"RIGHT\": direction = \"LEFT\" elif event.key == pygame.K_RIGHT and direction != \"LEFT\": direction = \"RIGHT\" if not game_over: # 移动蛇头 head = snake[0].copy() if direction == \"UP\": head[1] -= SNAKE_SIZE elif direction == \"DOWN\": head[1] += SNAKE_SIZE elif direction == \"LEFT\": head[0] -= SNAKE_SIZE elif direction == \"RIGHT\": head[0] += SNAKE_SIZE # 检测碰撞 if (head[0] = WIDTH or head[1] = HEIGHT or head in snake[1:]): game_over = True snake.insert(0, head) # 吃食物逻辑 if head == food: score += 10 food = [random.randrange(1, (WIDTH // SNAKE_SIZE)) * SNAKE_SIZE,  random.randrange(1, (HEIGHT // SNAKE_SIZE)) * SNAKE_SIZE] else: snake.pop() # 绘制画面 window.fill(BLACK) # 绘制蛇身 for pos in snake: pygame.draw.rect(window, GREEN, pygame.Rect(pos[0], pos[1], SNAKE_SIZE, SNAKE_SIZE)) # 绘制食物 pygame.draw.rect(window, RED, pygame.Rect(food[0], food[1], SNAKE_SIZE, SNAKE_SIZE)) # 显示分数 font = pygame.font.Font(None, 36) text = font.render(f\"Score: {score}\", True, WHITE) window.blit(text, (10, 10)) # 游戏结束显示 if game_over: font = pygame.font.Font(None, 72) text = font.render(\"GAME OVER!\", True, RED) window.blit(text, (WIDTH // 2 - 140, HEIGHT // 2 - 40)) pygame.display.flip()pygame.quit()