Python飞机大战,小白动手的第一个游戏!(附源码和图片)

编程入门 行业动态 更新时间:2024-10-17 16:34:24

Python飞机大战,小白动手的<a href=https://www.elefans.com/category/jswz/34/1770593.html style=第一个游戏!(附源码和图片)"/>

Python飞机大战,小白动手的第一个游戏!(附源码和图片)

Python飞机大战,适合小白动手的项目(附源码和图片)

由于飞机是每按下一次移动键才会动一下,这就令人很难受,下面的代码将会告诉你如何一直按键不松飞机也会随之一直动!

一、先按如下路径关系创建 feiji.py 文件和 images 文件夹。

二、把代码复制进去,源码如下。

#coding=utf-8
import pygame
from pygame.locals import *
import time
import random
#飞机基类和子弹基类的基类
class Base(object):def __init__(self, screen_temp, x, y, image_name):self.x = xself.y = yself.screen = screen_tempself.image = pygame.image.load(image_name)#飞机基类
class BasePlane(Base):def __init__(self, screen_temp, x, y, image_name):Base.__init__(self,screen_temp,x,y,image_name)self.bullet_list = []def display(self):self.screen.blit(self.image, (self.x, self.y))for bullet in self.bullet_list:bullet.display()bullet.move()if bullet.judge(): #判断子弹是否越界self.bullet_list.remove(bullet)
#子弹基类
class BaseBullet(Base):def display(self):self.screen.blit(self.image, (self.x, self.y))
#玩家飞机类
class HeroPlane(BasePlane):def __init__(self, screen_temp):BasePlane.__init__(self, screen_temp,205,700,"./images/hero1.png")self.key_right_status = Falseself.key_left_status = Falseself.key_up_status = Falseself.key_down_status = Falsedef move(self):if self.key_right_status:self.x += 3if self.key_left_status:self.x -= 3if self.key_down_status:self.y += 3if self.key_up_status:self.y -= 3def fire(self):self.bullet_list.append(Bullet(self.screen,self.x,self.y))#敌机类
class EnemyPlane(BasePlane):def __init__(self, screen_temp):BasePlane.__init__(self, screen_temp,0,0,"./images/enemy0.png")self.direction = "right"#控制敌机默认显示方向def move(self):if self.direction == "right":self.x += 5elif self.direction == "left":self.x -= 5if self.x > 420:self.direction = "left"elif self.x < 0:self.direction = "right"def fire(self):random_num = random.randint(1,50)if random_num == 20 or random_num == 21:self.bullet_list.append(EnemyBullet(self.screen,self.x,self.y))#玩家子弹类
class Bullet(BaseBullet):def __init__(self, screen_temp,x,y):BaseBullet.__init__(self,screen_temp,x+40,y-20,"./images/bullet.png")def move(self):self.y -= 10def judge(self):if self.y <  0:return Trueelse:return False#敌机子弹类
class EnemyBullet(BaseBullet):def __init__(self, screen_temp,x,y):BaseBullet.__init__(self,screen_temp,x+22,y+30,"./images/bullet1.png")def move(self):self.y += 10def judge(self):if self.y > 852:return Trueelse:return False#键盘控制函数
def key_control(hero_temp):#获取事件,比如按键等for event in pygame.event.get():#判断是否是点击了退出按钮if event.type == QUIT:print("exit")exit()#判断是否是按下了键elif event.type == KEYDOWN:#检测按键是否是a或者leftif event.key == K_a or event.key == K_LEFT:print('left')hero_temp.key_left_status = True#hero_temp.move_left()#检测按键是否是d或者rightelif event.key == K_d or event.key == K_RIGHT:print('right')hero_temp.key_right_status = True#hero_temp.move_right()#检测按键是否是w或者upelif event.key == K_w or event.key == K_UP:hero_temp.key_up_status = True#检测按键是否是s或者downelif event.key == K_s or event.key == K_DOWN:hero_temp.key_down_status = True#检测按键是否是空格键elif event.key == K_SPACE:print('space')hero_temp.fire()#判断是否是松了键elif event.type == KEYUP:if event.key == K_a or event.key == K_LEFT:hero_temp.key_left_status = Falseelif event.key == K_d or event.key == K_RIGHT:hero_temp.key_right_status = Falseelif event.key == K_w or event.key == K_UP:hero_temp.key_up_status = Falseelif event.key == K_s or event.key == K_DOWN:hero_temp.key_down_status = False

三、图片。
收集不易,点赞关注
=1001.2014.3001.5501

四、运行。
运行效果如下,因为我一只手拿着手机录视频所以操作很low、了

制作不易,看完点赞是个好习惯~

更多推荐

Python飞机大战,小白动手的第一个游戏!(附源码和图片)

本文发布于:2024-02-06 12:31:59,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1749154.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:第一个   源码   大战   飞机   图片

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!