今天要做一个打飞机的游戏!就结业了!还挺有趣!
整体框架
游戏主体划分为三个主要的类:
子弹类class Bullet
玩家类class Player
敌机类class Enem
把这三个东西的图像呈现在屏幕上。判断和处理子弹撞击敌机和敌机撞击玩家这两种情况。
类及函数作用
pygame.sprite模块
“sprite”,中文翻译“精灵”,在游戏动画一般是指一个独立运动的画面元素,在pygame中,就可以是一个带有图像(Surface)和大小位置(Rect)的对象。 简单来说是一个会动图片。它的两个成员变量
self.image=要显示图片的Surface
self.rect = 显示Surface的区域
对于self.rect,常用的设置rect的方法:self.rect = self.image.get_rect()。然后设定self.rect.topleft=(0,0)来设定左上角的位置,从而设定这个精灵在屏幕上的显示位置。
子弹类
成员主要是子弹的图片对象和子弹刷出来的位置,当然,还有移动速度。一个方法就是移动,从发出位置直线往屏幕上方移动。
飞机类
图像对象以及矩形参数和刷出位置,当然还会有移动速度和子弹集合(用来保存飞机射出的子弹)。方法的话就是上下左右移动了,不过需要做好边界判断。这个直接看代码就能理解了。
敌机类
该类保存了两个图像对象,一个是正常情况下的敌机图像。一个是爆炸的敌机图像。以便在撞击时能把撞击效果显示出来。一个方法就是和子弹差不多的移动了,不过它是从屏幕上方往底下移动的而已。
让子弹飞
shoot_frequency变量的作用就是控制子弹发射的频率,它控制在running每循环15次发射一个子弹。
刷出敌机
enemy_frequency变量的作用同样是控制刷怪的频率。running每循环50次就刷一个怪出来,位置是randint函数随机生成的。
遇到的问题
首先是安装pygame要,经常报错,下载的对应版本也对,但就是不行。
后来用pip wheel pygame 在cmd下执行。这个是让python自动下载对应的pygame。然后在pycharm中interpret加入pygame就能运行相应代码
截图
源码
#-- coding: utf-8 --
import pygame
from sys import exit
from pygame.locals import *
import random
设置游戏屏幕大小
SCREEN_WIDTH = 480
SCREEN_HEIGHT = 800
子弹类
class Bullet(pygame.sprite.Sprite):
def in