【Python游戏】Python实现一个星球大战的小游戏 | 附带源码
生活随笔
收集整理的這篇文章主要介紹了
【Python游戏】Python实现一个星球大战的小游戏 | 附带源码
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
相關(guān)文件
想學(xué)Python的小伙伴可以關(guān)注小編的公眾號【Python日志】
有很多的資源可以白嫖的哈,不定時會更新一下Python的小知識的哈!!
需要源碼的小伙伴可以在公眾號回復(fù)星球大戰(zhàn)
Python源碼、問題解答學(xué)習(xí)交流群:773162165
開發(fā)環(huán)境
Python版本:3.6.7
相關(guān)模塊:
pygame
random
以及一些python自帶的模塊。
環(huán)境搭建
安裝Python并添加到環(huán)境變量,pip安裝需要的相關(guān)模塊即可。
效果展示
開始界面
游戲界面
代碼實現(xiàn)
模塊導(dǎo)入
import pygame import random from os import path精靈類
class Player(pygame.sprite.Sprite): #產(chǎn)生一個精靈def __init__(self):pygame.sprite.Sprite.__init__(self)self.image = pygame.transform.flip(player_img,False,True) #第一個參數(shù)是左右反轉(zhuǎn),第二個是上下翻轉(zhuǎn)self.image = pygame.transform.scale(self.image,(53,40)) #縮放self.image.set_colorkey(BLACK) #用color_key方法除去方框周邊的黑色部分self.rect = self.image.get_rect()self.radius = 20#pygame.draw.circle(self.image,(255,0,0),self.rect.center,self.radius)self.rect.centerx = WIDTH/2self.rect.bottom = HIGHTself.hp = 100self.lives = 3self.score = 0self.hidden = Falseself.hide_time = 0self.is_firing_missile = Falseself.start_missile_time = 0self.last_missile_time = 0def update(self):keystate = pygame.key.get_pressed()if keystate[pygame.K_LEFT]:self.rect.x -= 8if keystate[pygame.K_RIGHT]:self.rect.x += 8if keystate[pygame.K_UP]:self.rect.y -= 8if keystate[pygame.K_DOWN]:self.rect.y += 8if self.rect.right > WIDTH:self.rect.right = WIDTHif self.rect.left < 0:self.rect.left = 0if self.rect.bottom >HIGHT:self.rect.bottom = HIGHTnow = pygame.time.get_ticks()if self.hidden and now - self.hide_time>1000: self.hidden = Falseself.rect.bottom = HIGHTself.rect.centerx = WIDTH/2if self.is_firing_missile:if now - self.start_missile_time <= MISSILE_LIFETIME:if now - self.last_missile_time >= MISIILE_INTERVAL:missile = Missile(self.rect.center)missiles.add(missile)self.last_missile_time = nowelse:self.is_firing_missile = Falsedef shoot(self):bullet = Bullet(self.rect.centerx,self.rect.centery)bullets.add(bullet)shoot_sound.play()def hide(self): #出生后無敵時間self.hidden = Trueself.rect.y = -200self.hide_time = pygame.time.get_ticks()def fire_missile(self):self.is_firing_missile = Trueself.start_missile_time = pygame.time.get_ticks()巖石類
class Enemy(pygame.sprite.Sprite):"""docstring for Enemy"""def __init__(self):pygame.sprite.Sprite.__init__(self)img_width = random.randint(20,120)img_height = int(img_width*70/72)self.image = pygame.transform.scale(enemy_img,(img_width,img_height))self.image.set_colorkey(BLACK)self.image_origin = self.image.copy()self.rect = self.image.get_rect()self.radius = int(img_width/2)#pygame.draw.circle(self.image,(255,0,0),self.rect.center,self.radius)self.rect.x = random.randint(0,WIDTH-self.rect.w)self.rect.bottom = 0self.vx = random.randint(-2,2)self.vy = random.randint(2,10)self.last_time = 0self.rotate_speed = random.randint(-5,5)self.rotate_angle = 0def update(self):self.rect.x += self.vxself.rect.y += self.vyself.rotate()# if self.rect.left>WIDTH:# self.kill()# if self.rect.right<0:# self.kill()def rotate(self): #制作巖石的旋轉(zhuǎn)now = pygame.time.get_ticks()if now - self.last_time>30:self.rotate_angle = (self.rotate_angle + self.rotate_speed) % 360self.image = pygame.transform.rotate(self.image_origin,self.rotate_angle)old_center = self.rect.centerself.rect = self.image.get_rect()self.rect.center = old_center詳細代碼的話可以找小編領(lǐng)取的喲
公眾號:Python日志
需要源碼的小伙伴可以在公眾號回復(fù)星球大戰(zhàn)
Python源碼、問題解答學(xué)習(xí)交流群:773162165
總結(jié)
以上是生活随笔為你收集整理的【Python游戏】Python实现一个星球大战的小游戏 | 附带源码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 运用c++打印一个日历
- 下一篇: Python对英汉词典的若干操作(#10