美文网首页Python新世界
python 可以移动的打飞机源码!

python 可以移动的打飞机源码!

作者: 919b0c54458f | 来源:发表于2018-11-30 14:40 被阅读11次

现在只实现了 左右移动 和 射击 目前没有射击对象

飞机图片放在 images 里面 和文件在同一个目录即可

源代码比较duo 5个文件:

game.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# @Time : 2018/11/13 0013 下午 11:30

# @File : newgame.py

# @Software: PyCharm

import sys

from pygame.sprite import Group

import pygame

from settings import Settings

from ship import Ship

import game_functions as gf

def run_game():

pygame.init()

ai_settings = Settings()

screen = pygame.display.set_mode((ai_settings.screen_width ,

ai_settings.screen_height))

pygame.display.set_caption('圣诞礼物@_@')

ship = Ship(ai_settings, screen)

bullets = Group()

while True:

gf.check_events(ai_settings,screen,ship,bullets)

ship.update()

bullets.update()

gf.update_bullets(bullets)

gf.update_screen(ai_settings,screen,ship,bullets)

run_game()

game_functions.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# @Time : 2018/11/16 0016 下午 9:58

# @File : function.py

# @Software: PyCharm

import sys

import pygame

from bullet import Bullet

def check_keydown_events(event,ai_settings,screen,ship,bullets):

if event.key == pygame.K_RIGHT:

ship.moving_right = True

elif event.key == pygame.K_LEFT:

ship.moving_left = True

elif event.key == pygame.K_SPACE:

fire_bullet(ai_settings, screen, ship, bullets)

def check_keyup_events(event, ship):

if event.key == pygame.K_RIGHT:

ship.moving_right = False

elif event.key == pygame.K_LEFT:

ship.moving_left = False

def check_events(ai_settings,screen,ship,bullets):

for event in pygame.event.get():

if event.type == pygame.QUIT:

sys.exit()

elif event.type == pygame.KEYDOWN:

check_keydown_events(event,ai_settings,screen,ship,bullets)

elif event.type == pygame.KEYUP:

check_keyup_events(event,ship)

def fire_bullet(ai_settings, screen, ship, bullets):

if len(bullets) < ai_settings.bullets_allowed:

new_bullet = Bullet(ai_settings, screen, ship)

bullets.add(new_bullet)

def update_screen(ai_settings,screen,ship,bullets):

screen.fill(ai_settings.bg_color)

for bullet in bullets.sprites():

bullet.draw_bullet()

ship.blitme()

pygame.display.flip()

def update_bullets(bullets):

bullets.update()

for bullte in bullets.copy():

if bullte.rect.bottom <= 0:

bullets.remove(bullte)

ship.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# @Time : 2018/11/15 0015 下午 11:27

# @File : ship.py.py

# @Software: PyCharm

import pygame

class Ship():

def __init__(self, ai_settings, screen):

self.screen = screen

self.ai_settings = ai_settings

self.image = pygame.image.load('images/1.png')

self.rect = self.image.get_rect()

self.screen_rect = screen.get_rect()

self.rect.centerx = self.screen_rect.centerx

self.rect.bottom = self.screen_rect.bottom

self.center = float(self.rect.centerx)

self.moving_right = False

self.moving_left = False

def update(self):

if self.moving_right and self.rect.right < self.screen_rect.right:

self.center += self.ai_settings.ship_speed_factor

if self.moving_left and self.rect.left > 0:

self.center -= self.ai_settings.ship_speed_factor

self.rect.centerx = self.center

def blitme(self):

self.screen.blit(self.image, self.rect)

settings.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# @Time : 2018/11/15 0015 下午 10:22

# @File : settings.py

# @Software: PyCharm

class Settings():

def __init__(self):

self.screen_width = 800

self.screen_height = 600

self.bg_color = (230,230,230)

self.ship_speed_factor = 1

self.bullet_speed_factor = 0.5

self.bullet_width = 3

self.bullet_height = 15

self.bullet_color = 60,60,60

self.bullets_allowed = 1

bullet.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# @Time : 2018/11/20 0020 下午 11:00

# @File : bullet.py

# @Software: PyCharm

import pygame

from pygame.sprite import Sprite

class Bullet(Sprite):

def __init__(self,ai_settings,screen,ship):

super(Bullet, self).__init__()

self.screen = screen

self.rect = pygame.Rect(0,0,ai_settings.bullet_width,ai_settings.bullet_height)

self.rect.centerx = ship.rect.centerx

self.rect.top = ship.rect.top

self.y = float(self.rect.y)

self.color = ai_settings.bullet_color

self.speed_factor = ai_settings.bullet_speed_factor

def update(self):

self.y -= self.speed_factor

self.rect.y = self.y

def draw_bullet(self):

pygame.draw.rect(self.screen,self.color,self.rect)

相关文章

网友评论

    本文标题:python 可以移动的打飞机源码!

    本文链接:https://www.haomeiwen.com/subject/csrhcqtx.html