前言
import pygame
import time #循环里面要sleep一下,不然一会儿就将内存占满了
from pygame.locals import \* #检测键盘
import random
import sys #退出系统
#动态的项目,先截个静态图来分析:化动为静,化难为易,一个西瓜切成块,再拼接起来
#拿到一个大项目,首先把项目的各个元素分成一个个的对象,确定对象具备的属性,方法,然后再组装成为一个项目
#玩家类:
#属性:显示窗口、位置、图片、子弹列表、移动状态
#方法:显示、移动、开火,凡是动作类都搞成方法
class player():
def \_\_init\_\_(self,screen):
self.screen=screen#将一个窗口对象作为了属性值
self.x=150
self.y=500
self.img =pygame.image.load("飞机\\\\hero.gif")
self.bullet\_list=\[\]
self.ifmoveright=0#0表示不移动,1表示移动
self.ifmoveleft=0
def display(self):
self.screen.blit(self.img,(self.x,self.y))
print()
for f in self.bullet\_list:
f.move()
f.display()
if f.y<=0:
self.bullet\_list.remove(f)
def move(self):
if self.ifmoveleft==1 and self.x>=-30:
self.x-=20
if self.ifmoveright==1 and self.x<=270:
self.x+=20
def fire(self):
d=playerzd(self.screen,self.x,self.y)
self.bullet\_list.append(d)
class playerzd():
def \_\_init\_\_(self,screen,x,y):
self.screen=screen
self.x=x
self.y=y
self.img=pygame.image.load("飞机\\\\bullet.png")
def display(self):
self.screen.blit(self.img,(self.x,self.y))
def move(self):
self.y-=20
class diji():
def \_\_init\_\_(self,screen):
self.screen=screen#将一个窗口对象作为了属性值
self.x=0
self.y=0
self.img =pygame.image.load("飞机\\\\enemy1.png")
self.bullet\_list=\[\]
self.dijimove=0#0表示左移动,1表示右移动
def display(self):
self.screen.blit(self.img,(self.x,self.y))
for b in self.bullet\_list:
b.move()
b.display()
if b.y>=600:
self.bullet\_list.remove(b)
def move(self):
if self.x<=0:
self.dijimove=1
if self.x>280:
self.dijimove=0
if self.dijimove==1:
self.x+=10
if self.dijimove==0:
self.x-=10
def fire(self):
dijizd1=dijizd(self.screen,self.x,self.y)
self.bullet\_list.append(dijizd1)
class dijizd():
def \_\_init\_\_(self,screen,x,y):
self.screen=screen#将一个窗口对象作为了属性值
self.x=x
self.y=y
self.img=pygame.image.load("飞机\\\\bullet-1.gif")
def display(self):
self.screen.blit(self.img,(self.x,self.y))
def move(self):
self.y+=20
#玩家子弹类
#键盘监控
def jpinput(player):
for event in pygame.event.get():
if event.type==QUIT:
print("正在退出")
sys.exit(0)#强制退出
if event.type==KEYDOWN:
if event.key==K\_RIGHT:
print("正在右移动")
player.ifmoveright=1
if event.key==K\_LEFT:
print("正在左移动")
player.ifmoveleft=1
if event.key==K\_SPACE:
print("玩家开火")
player.fire()
if event.type==KEYUP:
if event.key==K\_RIGHT:
player.ifmoveright=0
if event.key==K\_LEFT:
player.ifmoveleft=0
class main():
screen=pygame.display.set\_mode((300,600))
backimg = pygame.image.load("飞机\\\\background.png")
a = player(screen)
b = diji(screen)
while 1==1:
screen.blit(backimg,(0,0))
b.move()
c=random.randint(1,5)
if c==1:
b.fire()
b.display()
jpinput(a)
a.move()
a.display()
pygame.display.update()
time.sleep(0.5)
Python入门教程
如果你现在还是不会Python也没关系,下面我会给大家免费分享一份Python全套学习资料, 包含视频、源码、课件,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,可以和我一起来学习交流。
① Python所有方向的学习路线图,清楚各个方向要学什么东西
② 600多节Python课程视频,涵盖必备基础、爬虫和数据分析
③ 100多个Python实战案例,含50个超大型项目详解,学习不再是只会理论
④ 20款主流手游迫解 爬虫手游逆行迫解教程包
⑤ 爬虫与反爬虫攻防教程包,含15个大型网站迫解
⑥ 爬虫APP逆向实战教程包,含45项绝密技术详解
⑦ 超300本Python电子好书,从入门到高阶应有尽有
⑧ 华为出品独家Python漫画教程,手机也能学习
⑨ 历年互联网企业Python面试真题,复习时非常方便
👉Python学习视频600合集👈
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉实战案例👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉100道Python练习题👈
检查学习结果。
👉面试刷题👈
资料领取
这份完整版的Python全套学习资料已经上传网盘,朋友们如果需要可以点击下方微信卡片免费领取 ↓↓↓【保证100%免费】
或者
【点此链接】领取
![](https://i-blog.csdnimg.cn/blog_migrate/7006fa8354e4e44de2f74f1eac362328.png)