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

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()

相关文章:

  • **模式的好处 (设计模式)
  • ArcGIS Pro中创建最低成本路径的详尽教程
  • 科普:HTTP端口80和HTTPS端口443
  • 浅谈 Redis 主从集群原理(一)
  • Figure自研模型Helix发布,人形机器人迈向新纪元?
  • 《一起打怪兽吧》——自制一款Python小游戏
  • 一文讲解Redis中的数据一致性问题
  • Linux红帽:RHCSA认证知识讲解(二)配置网络与登录本地远程Linux主机
  • Qt在Linux嵌入式开发过程中复杂界面滑动时卡顿掉帧问题分析及解决方案
  • 策略模式介绍和代码示例
  • Megatron-LM:使用模型并行训练数十亿参数的语言模型
  • 【SpringBoot+Vue】博客项目开发一:基础框架搭建
  • Python游戏编程之赛车游戏6-3
  • java23种设计模式-桥接模式
  • 【关于seisimic unix中使用suedit指令无法保存问题】
  • 网络 - Socket编程
  • Go 协程池完整解析(原理+实践+性能分析
  • 第二章-续:辅助功能
  • EX_25/2/22
  • 第5章 软件工程(二)
  • 高端网站建设网站建设设计思路/优化大师软件大全
  • 怎么做那些盗号网站/武汉seo网站优化
  • 徐州市网站/江苏网站建站系统哪家好
  • 金华农村网站建设/看b站视频软件下载安装
  • 专业开发网站建设哪家好/优化大师的优化项目有哪7个
  • 做视频网站的备案要求吗/投广告哪个平台好