当前位置: 首页 > article >正文

Python游戏编程之赛车游戏6-4

2 实例化“敌人”汽车类以及对实例进行处理

2.1 实例化“敌人”汽车类

实例化“敌人”汽车类的代码如图4所示。

图4 实例化“敌人”汽车类的代码

2.2 将“敌人”汽车类的实例加入到all_sprites “精灵组”中

将“敌人”汽车类的实例加入到all_sprites “精灵组”中的代码如图5所示。

图5 将“敌人”汽车类的实例加入到“精灵组”中的代码

相关链接1  all_sprites“精灵组”的相关资料,请参考

《Python游戏编程之赛车游戏2》

2.3 将“敌人”汽车类的实例加入到Enemies“精灵组”中

将“敌人”汽车类的实例加入到Enemies“精灵组”中的代码如图6所示。

图6 将“敌人”汽车类的实例加入到Enemies“精灵组”中的代码

与“2.2 将“敌人”汽车类的实例加入到all_sprites “精灵组”中”中的all_sprites “精灵组”不同,Enemies“精灵组”中并不是游戏的所有精灵,而是只包括敌人汽车精灵(后续增加游戏难度时,可以加入多个敌人)。all_sprites “精灵组”主要用于与玩家的碰撞检测。

2.4 显示并移动“敌人”汽车类

因为已经将“敌人”汽车类的实例加入到all_sprites “精灵组”中,此时可以使用《Python游戏编程之赛车游戏2》中图10所示的代码显示并移动“敌人”汽车类,无需再写新的代码。

3 游戏运行效果

游戏运行效果如图7所示。

图7 游戏运行效果

4 完整代码

游戏的完整代码如下所示。

import pygame
import os
from pygame.locals import *
import random

WIDTH = 400
HEIGHT = 600
SPEED = 5
SCORE = 0

pygame.init()
screen = pygame.display.set_mode((WIDTH,HEIGHT))
pygame.display.set_caption('赛车游戏')

background = pygame.image.load("AnimatedStreet.png")

class Player(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__() 
        self.image = pygame.image.load("Player.png")
        self.rect = self.image.get_rect()
        self.rect.center = (160, 520)
    def move(self):
        pressed_keys = pygame.key.get_pressed()
        
        if self.rect.left > 0:
              if pressed_keys[K_LEFT]:
                  self.rect.move_ip(-5, 0)
        if self.rect.right < WIDTH:        
              if pressed_keys[K_RIGHT]:
                  self.rect.move_ip(5, 0)

class Enemy(pygame.sprite.Sprite):
      def __init__(self):
        super().__init__() 
        self.image = pygame.image.load("Enemy.png")
        self.rect = self.image.get_rect()
        self.rect.center = (random.randint(40,WIDTH-40), 0)

      def move(self):
        global SCORE
        self.rect.move_ip(0,SPEED)
        if (self.rect.bottom > HEIGHT):
            SCORE += 1
            self.rect.top = 0
            self.rect.center = (random.randint(40, WIDTH - 40), 0)

P1 = Player()
E1 = Enemy()
all_sprites = pygame.sprite.Group()
all_sprites.add(P1)
all_sprites.add(E1)
enemies = pygame.sprite.Group()
enemies.add(E1)

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            os.sys.exit()
    
    screen.blit(background, (0,0))
    for entity in all_sprites:
        entity.move()
        screen.blit(entity.image, entity.rect)
    pygame.display.update()


http://www.kler.cn/a/560623.html

相关文章:

  • 关于<<DeepSeek-R1:通过强化学习激励大语言模型的推理能力>>的解读
  • Teigha(ODA<Open Design Alliance>_开放设计联盟)——cad c# 二次开发
  • 原生稀疏注意力NSA 替换transformer 注意力进行文本生成训练
  • 【开源免费】基于SpringBoot+Vue.JS物流管理系统(JAVA毕业设计)
  • 普通人使用生成式语言模型的几个阶段
  • javaweb-vue3基础
  • R Excel 文件:高效数据处理的利器
  • 在CentOS 7下部署NFS的详细教程
  • 一些时间方法
  • 如何保证bug在改完之后不会引起新bug
  • 如何通过阿里云CDN优化网站访问与下载速度?
  • 数据库-事务的ACID
  • Linux 系统内存不足导致服务崩溃的排查方法
  • TCP重传机制
  • 使用 Three.js 转换 GLSL 粒子效果着色器
  • 【C++设计模式】观察者模式(1/2):从基础到优化实现
  • Mesh自组网技术及应用
  • 网络运维学习笔记(DeepSeek优化版)002网工初级(HCIA-Datacom与CCNA-EI)子网划分与协议解析
  • 七.智慧城市数据治理平台架构
  • 【LeetCode 热题100】48. 旋转图像以及旋转任意角度的算法思路及python代码