pygame 快速入门

第一步:
安装pygame
$ sudo pip3 install pygame
第二部:
$ python3 -m pygame.examples.aliens
今天我们要做的是飞机大战。

import random
import pygame
CREATE_ENEMY_EVENT =pygame.USEREVENT

HERO_FIRE_EVENT = pygame.USEREVENT +1

FEAM_PER_SEC = 60
SCREEN_RECT = pygame.Rect(0,0,700,700)
class GameSprite(pygame.sprite.Sprite):
def init(self,image_name,speed = 1,speend = 1):
super().init()
self.image = pygame.image.load(image_name)
self.rect = self.image.get_rect()
self.speed = speed
def update(self):
self.rect.y += self.speed
class background(GameSprite):
def init(self,is_alt=False):
self.image_name = "./images/asd.jpg"
super().init(self.image_name)
if is_alt:
self.rect.y -= self.rect.height
def update (self):
super().update()
self.rect.y += self.speed
if self.rect.y >= SCREEN_RECT.height:
self.rect.y = -self.rect.height
class Enemy (GameSprite):
def init(self):
self.image_name = "./images/enemy-1.gif"
super().init(self.image_name)

    self.speed = random.randint(1,5)
    self.rect.bottom = 0
    max_x = SCREEN_RECT.width - self.rect.width
    self.rect.x = random.randint(0,max_x)
    
def update(self):
    super().update()
    if self.rect.y >= SCREEN_RECT.height:
        self.kill()
def __del__(self):
           print("清除德吉")

class Hero(GameSprite):
def init(self):
super().init("./images/plane.png",0)
self.rect.centerx = SCREEN_RECT.centerx
self.rect.bottom = SCREEN_RECT.bottom-100
self.bullets = pygame.sprite.Group()
def update(self):
self.rect.x += self.speed
if self.rect.left <0:
self.rect.left = 0
if self.rect.right > SCREEN_RECT.right:
self.rect.right = SCREEN_RECT.right
def updateud(self):
self.rect.y += self.speend
def fire (self):
print("杀无赦")
for i in (1,2,3,4):
bullet = Bullet()
bullet.rect.bottom = self.rect.y - i*20
bullet.rect.centerx = self.rect.centerx
self.bullets.add(bullet)

class Bullet(GameSprite):
def init(self):
super().init("./images/enemy0_down print("清除德吉")

class Hero(GameSprite):
def init(self):
super().init("./images/plane.png",0)
self.rect.centerx = SCREEN_RECT.centerx
self.rect.bottom = SCREEN_RECT.bottom-100
self.bullets = pygame.sprite.Group()
def update(self):
self.rect.x += self.speed
if self.rect.left <0:
self.rect.left = 0
if self.rect.right > SCREEN_RECT.right:
self.rect.right = SCREEN_RECT.right
def updateud(self):
self.rect.y += self.speend
def fire (self):
print("杀无赦")4.png",-1)
def update(self):
super().update()
if self.rect.bottom < 0:
self.kill()
def del(self):
print("珊瑚子弹")

import pygame
from PlanSprite import *
HERO_FIRE_EVENT = pygame.USEREVENT +1

class PlanGame(object):
#初始化
def init(self):
print("游戏初始化")
#创建窗口
self.screen = pygame.display.set_mode(SCREEN_RECT.size)
#创建时钟对象
self.clock = pygame.time.Clock()
self.__create_sprite()

    pygame.time.set_timer( CREATE_ENEMY_EVENT,1000)
    pygame.time.set_timer(HERO_FIRE_EVENT,500)
    self.enemy_group = pygame.sprite.Group()
#开始游戏
def startGame(self):
    print("开始游戏")   
    while True:
        self.clock.tick(60)
        self.__event_handler()
        self.__check_collide()
        self.__update_sprites()
        pygame.display.update()



#创建精灵或精灵组
def __create_sprite(self):
    bg = background()
    bg1 = background(True)
    self.back_group = pygame.sprite.Group(bg,bg1)

    self.hero = Hero()
    self.hero_group = pygame.sprite.Group(self.hero)

    #self.bullets =  Bullet()
    #self.bullet_group = pygame.sprite.Group(self.bullets)



    #事件监听
def __event_handler(self):
    keys_pressed = pygame.key.get_pressed()
    if keys_pressed[pygame.K_RIGHT]:
        self.hero.speed = 6
    elif keys_pressed[pygame.K_LEFT]:
        self.hero.speed = -6
    elif keys_pressed[pygame.K_UP]:
        self.hero.speend = -6
    elif keys_pressed[pygame.K_DOWN]:
        self.hero.speend = 6
    else:
        self.hero.speed = 0

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            PlanGame.__game_over(self)
        elif event.type == CREATE_ENEMY_EVENT:
            enemy = Enemy()
            self.enemy_group.add(enemy)
        elif event.type == HERO_FIRE_EVENT:
            self.hero.fire()

碰撞检测

def __check_collide(self):
    pygame.sprite.groupcollide(self.hero.bullets,self.enemy_group,True,True)
    enemies = pygame.sprite.spritecollide(self.hero,self.enemy_group,True)
    if len(enemies) > 0:
        self.hero.kill()
        PlaneGame.__game_over()
    #更新精灵组
def __update_sprites(self):
    self.back_group.update()
    self.back_group.draw(self.screen)

    self.enemy_group.update()
    self.enemy_group.draw(self.screen)

    self.hero_group.update()
    self.hero_group.draw(self.screen)

    self.hero.bullets.update()
    self.hero.bullets.draw(self.screen)
def __game_over(self):
    print("游戏结束")   
    pygame.quit()
    exit()  

if name == 'main':
plangame = PlanGame()
plangame.startGame()

以上就是制作飞机大战的简单程序。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,133评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,682评论 3 390
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,784评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,508评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,603评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,607评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,604评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,359评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,805评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,121评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,280评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,959评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,588评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,206评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,193评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,144评论 2 352

推荐阅读更多精彩内容

  • 大家好。小编通过这段时间学习做了一个超级简单的打飞机。现在贡献给大家。 我们先要建两个.py文件。小编在这里是建的...
    AnHuaFeng阅读 5,292评论 0 0
  • 这次呢,让我们重温一下儿时的乐趣,用Python做一个飞机大战的小游戏。接下来,让我们一起走进“飞机大战”。 一....
    HDhandi阅读 1,910评论 1 4
  • 这星期长见识了,虽然每星期都在学习新的内容,都在长见识,但是这次挺惊讶的,竟然可以用python,...
    要你何用杀了算了阅读 616评论 0 1
  • 1.安装Pygame模块 官方网址 网站栏目内容 安装 pygame $sudo pip3 install pyg...
    卝婯阅读 25,028评论 3 17
  • (一) 4月4日晚上7点半,微风习习,初夏的夜已完全笼罩了大地,小区的护城河...
    Daisy达西阅读 307评论 2 4