五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

隕石動(dòng)效完成!從零開(kāi)始用Python編程制作飛機(jī)大戰(zhàn)游戲 P07

2023-01-28 17:24 作者:xiaotiaotiao2011  | 我要投稿
import pygame  # 導(dǎo)入pygame
import random  # 導(dǎo)入random
import os
#bug:石頭無(wú)法旋轉(zhuǎn)

# 設(shè)置常量,常量就是在python中不變的量

FPS = 60  # FPS是指幀數(shù),指在一秒內(nèi)運(yùn)行多少次
WIDTH = 500
HEIGHT = 600
WHITE = (255, 255, 255)  # 這是一個(gè)RGB,R表示red,G表示green,B表示blue,數(shù)值是一個(gè)元組,必須帶括號(hào)
GREEN = (0, 255, 0)
RED = (225, 0, 0)
YELLOW = (255, 255, 0)
BLACK = (0, 0, 0)



# 初始化pygame

pygame.init()
pygame.mixer.init()
screen = pygame.display.set_mode(
    (WIDTH, HEIGHT))  # 創(chuàng)建一個(gè)窗口,寬為WIDTH常量,高為HEIGHT常量
clock = pygame.time.Clock()  # 設(shè)置幀數(shù)

background_img=pygame.image.load(os.path.join("img", "background.png")).convert()

player_img=pygame.image.load(os.path.join("img","player.png")).convert()

rock_img=pygame.image.load(os.path.join("img","rock.png")).convert()

bullet_img=pygame.image.load(os.path.join("img","bullet.png")).convert()

pygame.display.set_caption('plane_war')  # 窗口標(biāo)題為字符串“plane_war”,引號(hào)是英文

hoot_sound=pygame.mixer.Sound(os.path.join("sound","shoot.wav"))
expl_sounds=[pygame.mixer.Sound(os.path.join("sound","expl0.wav")),
             pygame.mixer.Sound(os.path.join("sound","expl1.wav"))]

pygame.mixer.music.load(os.path.join("sound","background.ogg"))
pygame.mixer.music.set_volume(0.3)
class Player(pygame.sprite.Sprite):  # 設(shè)置一個(gè)類,繼承父類pygame.sprite.Sprite

    def __init__(self):  # 設(shè)置初始化內(nèi)容

        pygame.sprite.Sprite.__init__(self)

        self.image = pygame.transform.scale(player_img,(50,40))

        self.image.set_colorkey((BLACK))

        self.rect = self.image.get_rect()  # 獲取長(zhǎng)方形的矩形位置

        self.rect.centerx = WIDTH/2  # 設(shè)置長(zhǎng)方形中心在x軸的中心

        self.rect.bottom = HEIGHT-20  # 設(shè)置長(zhǎng)方形的底部在y軸的580位置

        self.speedx = 8  # 設(shè)置每次移動(dòng)的像素(px)

    def update(self):  # 定義update函數(shù)

        key_pressed = pygame.key.get_pressed()  # 獲取鍵盤狀態(tài)

        # 判斷鍵盤狀態(tài)

        if key_pressed[pygame.K_RIGHT]:  # 判斷鍵盤右鍵是否按下

            self.rect.x += self.speedx

        if key_pressed[pygame.K_LEFT]:  # 判斷鍵盤左鍵是否按下

            self.rect.x -= self.speedx

        # 判斷位置

        if self.rect.right > WIDTH:  # 如果右邊的位置大于寬

            self.rect.right = WIDTH

        if self.rect.left < 0:  # 如果左邊小于寬

            self.rect.left = 0

    def shoot(self):

        bullet = Bullet(self.rect.centerx, self.rect.centery)
        all_sprites.add(bullet)
        bullets.add(bullet)
        hoot_sound.play( )

    def k_shoot(self):
        for i in range(100):
            偏差 = random.randrange(-250, 250)
            bullet = Bullet(self.rect.centerx+偏差, self.rect.centery)
            all_sprites.add(bullet)
            bullets.add(bullet)
            hoot_sound.play( )

class Rock(pygame.sprite.Sprite):  # 設(shè)置一個(gè)類,繼承父類pygame.sprite.Sprite

    def __init__(self):  # 設(shè)置初始化內(nèi)容

        pygame.sprite.Sprite.__init__(self)
        self.image_origin=rock_img
        self.image_origin.set_colorkey(BLACK)
        self.image=self.image_origin.copy()
        self.big_or_small=random.randint(30,70)
        self.image = pygame.transform.scale(rock_img, (self.big_or_small, self.big_or_small))

        self.image.set_colorkey((BLACK))

        self.rect = self.image.get_rect()  # 獲取長(zhǎng)方形的矩形位置

        # 隨機(jī)生成位置和速度

        try:

            self.rect.x = random.randint(0, WIDTH-self.rect.x)
            self.rect.y = random.randint(-40, -10)
            self.speedy = random.randint(2, 10)  # 設(shè)置每次移動(dòng)的像素(px)
            self.speedx = random.randint(-3, 3)

        except:

            self.rect.x = random.randint(0, 470)
            self.rect.y = -10
            self.speedy = random.randint(2, 10)
            self.speedx = random.randint(-3, 3)

        self.total_degree=0
        self.rot_degree=random.randrange(-3,3)
    def rotate(self):
        self.total_degree+=3
        self.total_degree%=360
        self.image=pygame.transform.rotate(self.image_origin,self.rot_degree)
        center=self.rect.center
        self.rect=self.image.get_rect()
        self.rect.center=center
    def update(self):  # 定義update函數(shù)

        self.rect.y += self.speedy  # y軸增加

        self.rect.x += self.speedx  # x軸增加

        if self.rect.top > HEIGHT or self.rect.left > WIDTH or self.rect.right < 0:

            try:

                self.rect.x = random.randint(0, WIDTH-self.rect.x)

                self.rect.y = random.randint(-40, -10)

                self.speedy = random.randint(2, 10)  # 設(shè)置每次移動(dòng)的像素(px)

                self.speedx = random.randint(-3, 3)

            except:

                self.rect.x = random.randint(0, 470)

                self.rect.y = -10

                self.speedy = random.randint(2, 10)

                self.speedx = random.randint(-3, 3)

class Bullet(pygame.sprite.Sprite):  # 設(shè)置一個(gè)類,繼承父類pygame.sprite.Sprite

    def __init__(self, x, y):  # 設(shè)置初始化內(nèi)容

        pygame.sprite.Sprite.__init__(self)

        self.image =pygame.transform.scale(bullet_img,(5,20))  # 創(chuàng)建一個(gè)寬10,高20的長(zhǎng)方形,數(shù)值為數(shù)組
        self.image.set_colorkey(BLACK)

        self.rect = self.image.get_rect()
        self.rect.x = x
        self.rect.y = y

        self.speedy = -10  # 速度-10

    def update(self):  # 定義update函數(shù)

        self.rect.y += self.speedy  # y軸增加

        if self.rect.bottom < 0:

            self.kill()  # 隱藏


all_sprites = pygame.sprite.Group()  # 創(chuàng)建一個(gè)所有精靈列表

rocks = pygame.sprite.Group()

bullets = pygame.sprite.Group()

player = Player()

all_sprites.add(player)
pygame.mixer.music.play(-1)

for i in range(8):

    rock = Rock()

    all_sprites.add(rock)

    rocks.add(rock)


running = True  # 設(shè)running為布爾值True,表示真

# 主循環(huán)

while running:

    clock.tick(FPS)  # 設(shè)置幀數(shù)為60/s

    for event in pygame.event.get():  # 判斷窗口狀態(tài)

        if event.type == pygame.QUIT:  # 檢測(cè)窗口是否關(guān)閉

            running = False  # 如果是,將running設(shè)為False,停止判斷

        elif event.type == pygame.KEYDOWN:

            if event.key == pygame.K_SPACE:
                player.shoot()
            if event.key==pygame.K_k:
                player.k_shoot()

    # 更新游戲

    all_sprites.update()

    hits_rockandbullet = pygame.sprite.groupcollide(
        rocks, bullets, True, True)  # 檢測(cè)子彈與隕石是否碰撞
    for hit in hits_rockandbullet:
        # 打中一個(gè)再生成一個(gè)
        random.choice(expl_sounds).play()
        r = Rock()
        all_sprites.add(r)
        rocks.add(r)

    # 顯示畫面
    hits_rockandbullet=pygame.sprite.spritecollide(player,rocks,False)
    if hits_rockandbullet:
        running=False#True
    screen.fill(BLACK)
    screen.blit(background_img,(0,0))
    all_sprites.draw(screen)

    pygame.display.update()  # 窗口刷新


pygame.quit()


隕石動(dòng)效完成!從零開(kāi)始用Python編程制作飛機(jī)大戰(zhàn)游戲 P07的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
鄂州市| 石景山区| 浦县| 皮山县| 名山县| 杭锦旗| 龙井市| 宜良县| 玉溪市| 读书| 鹰潭市| 巨野县| 高阳县| 颍上县| 磐安县| 于田县| 深水埗区| 舞阳县| 静海县| 闸北区| 大田县| 邵东县| 海盐县| 盐山县| 遂川县| 九龙坡区| 项城市| 砚山县| 肇庆市| 越西县| 明水县| 文安县| 鄯善县| 兴业县| 封丘县| 云和县| 新津县| 清远市| 胶南市| 潞城市| 栖霞市|