首先导入pygame包
一般来说pip3工具是在你工作的项目路径下的script文件夹中的
可以通过cd命令切换文件夹,dir查看文件夹内容,也可以直接找到文件后再切换文件夹
然后在pip3所在的目录中执行pip3 install pygame,如果直接下载的话速度会比较慢,建议切换pip源
参考: https://blog.csdn.net/yaoqiwaimai/article/details/57084997
import pygame #引入pygame包
from pygame.locals import *
import time #引入time包
import random
def start():
screen = pygame.display.set_mode((480,790),0,32) #定义游戏宽和高
image_file_path = "./plane/bg.jpg" # <-这里是定义背景图片路径的
background = pygame.image.load(image_file_path).convert()
hero_plane = HeroPlane(screen) #显示我方飞机
enemy_plane = EnemyPlane(screen) #显示敌方飞机
while True:
screen.blit(background,(0,0))
hero_plane.display()
enemy_plane.display()
enemy_plane.move()
enemy_plane.launch_bullet()
time.sleep(0.01)
pygame.display.update()
for event in pygame.event.get():
if event.type == QUIT: #当点击游戏右上角的退出按钮时游戏退出
print("exit")
exit()
elif event.type == KEYDOWN: #以下是用键盘接收操作并返回相应的响应
if event.key == K_a or event.key == K_LEFT:
print("left")
hero_plane.move_left()
elif event.key == K_d or event.key == K_RIGHT:
print("right")
hero_plane.move_right()
elif event.key == K_w or event.key == K_UP:
print("up")
hero_plane.move_top()
elif event.key == K_s or event.key ==K_DOWN:
print("down")
hero_plane.move_buttom()
elif event.key == K_SPACE:
print("space")
hero_plane.launch_bullet()
class HeroPlane(object):
def __init__(self,screen):
self.x = 130 # 定义飞机所处的位置,游戏左上角为0,0
self.y = 500
self.screen = screen
self.image_name = "./plane/1.gif" # <-这里是定义我方飞机的图片
self.image = pygame.image.load(self.image_name).convert()
self.bullet_list = []
def display(self):
self.screen.blit(self.image,(self.x,self.y))
need_del_list = []
for item in self.bullet_list:
if item.judge(): #判断子弹列表中是否超出边界,如果有则添加到需要删除的列表中
need_del_list.append(item)
for del_item in need_del_list:
self.bullet_list.remove(del_item)
for bullet in self.bullet_list:
bullet.display()
bullet.move()
def launch_bullet(self):
new_bullet = Bullet(self.x,self.y,self.screen)
self.bullet_list.append(new_bullet)
def move_left(self): #以下是定义飞机单次移动的距离
self.x -= 10
def move_right(self):
self.x += 10
def move_top(self):
self.y -= 10
def move_buttom(self):
self.y += 10
class EnemyPlane(object):
def __init__(self,screen):
self.x = 0
self.y = 0
self.screen = screen
self.image_name = "./plane/leimu.gif" #定义敌方飞机的位置
self.image = pygame.image.load(self.image_name).convert()
self.bullet_list = []
self.direction = "right"
def display(self):
self.screen.blit(self.image,(self.x,self.y))
def get_Local(self):
print(self.x,self.y)
return (self.x,self.y)
def move(self):
if self.x > 480 - 130:
self.direction = "left"
elif self.x < 0:
self.direction = "right"
if self.direction == "right":
self.x += 2
elif self.direction == "left":
self.x -= 2
def launch_bullet(self):
number = random.randint(1,1000)
if number == 88:
new_bullet = EnenmyBullet(self.x,self.y,self.screen)
self.bullet_list.append(new_bullet)
def display(self):
self.screen.blit(self.image,(self.x,self.y))
need_del_list = []
for i in self.bullet_list:
if i.judge():
need_del_list.append(i)
for i in need_del_list:
self.bullet_list.remove(i)
for bullet in self.bullet_list:
bullet.display()
bullet.move()
class Bullet(object):
def __init__(self,x,y,screen):
self.x = x + 100
self.y = y - 20
self.screen = screen
self.image = pygame.image.load("./plane/bullet.gif") #定义子弹的图片
def display(self):
self.screen.blit(self.image,(self.x,self.y))
def move(self):
self.y -= 5
def judge(self):
if self.y < 0:
return True
else:
return False
def get_hero_bullet(self):
return (self.x,self.y)
class EnenmyBullet():
def __init__(self,x,y,screen):
self.x = x + 30
self.y = y + 30
self.screen = screen
self.image = pygame.image.load("./plane/heart.gif").convert() #定义敌方子弹的图片
def move(self):
self.y += 2
def display(self):
self.screen.blit(self.image,(self.x,self.y))
def judge(self):
if self.y > 790:
return True
else:
return False
if __name__ == "__main__":
start()