- 20
- 0
这是第一个marval_invasion
import pygame
from settings import Settings
from ironman import Ironman
from pygame.sprite import Group
from mieba import Mieba
import game_funtions 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("marvel_invasion")
ironman=Ironman(ai_settings,screen)
bullets=Group()
miebas=Group()
gf.create_fleet(ai_settings,screen,ironman,miebas)
bg_color=(255,255,255)
mieba=Mieba(ai_settings,screen)
while True:
gf.check_events(ai_settings,screen,ironman,bullets)
ironman.update()
gf.update_bullets(bullets)
gf.update_screen(ai_settings,screen,ironman,miebas,bullets)
run_game()
The second
import pygame
class Ironman():
def __init__(self,ai_settings,screen):
self.screen=screen
self.ai_settings=ai_settings
self.image=pygame.image.load('images/iron-man.bmp')
self.rect=self.image.get_rect()
self.screen_rect=screen.get_rect()
self.rect.centery=self.screen_rect.centery
self.rect.right=self.screen_rect.right
self.center=float(self.rect.centery)
self.moving_down=False
self.moving_up=False
def update(self):
if self.moving_down and self.rect.bottom<self.screen_rect.bottom:
self.center+=self.ai_settings.ironman_speed_factor
if self.moving_up and self.rect.top>0:
self.center-=self.ai_settings.ironman_speed_factor
self.rect.centery=self.center
def blitme(self):
self.screen.blit(self.image,self.rect)
The third
import pygame
from pygame.sprite import Sprite
class Mieba(Sprite):
def __init__(self,ai_settings,screen):
super(Mieba,self).__init__()
self.screen=screen
self.ai_settings=ai_settings
self.image=pygame.image.load('images/mieba.bmp')
self.rect=self.image.get_rect()
self.rect.x=self.rect.width
self.rect.y=self.rect.height
self.x=float(self.rect.x)
def blitme(self):
self.screen.blit(self.image,self.rect)请输入代码
The fourth
import pygame
from pygame.sprite import Sprite
class Bullet(Sprite):
def __init__(self,ai_settings,screen,ironman):
super(Bullet, self).__init__()
self.screen=screen
self.rect=pygame.Rect(0,0,ai_settings.bullet_width,
ai_settings.bullet_height)
self.rect.centery=ironman.rect.centery
self.rect.left=ironman.rect.left
self.x=float(self.rect.x)
self.color=ai_settings.bullet_color
self.speed_factor=ai_settings.bullet_speed_factor
def update(self):
self.x-=self.speed_factor
self.rect.x=self.x
def draw_bullet(self):
pygame.draw.rect(self.screen,self.color,self.rect)
The fifth
import sys
import pygame
from bullet import Bullet
from mieba import Mieba
def check_keydown_events(event,ai_settings,screen,ironman,bullets):
if event.key == pygame.K_DOWN:
ironman.moving_down = True
elif event.key == pygame.K_UP:
ironman.moving_up = True
elif event.key==pygame.K_SPACE:
fire_bullet(ai_settings,screen,ironman,bullets)
elif event.key==pygame.K_q:
sys.exit()
def check_keyup_events(event,ironman):
if event.key == pygame.K_DOWN:
ironman.moving_down = False
elif event.key == pygame.K_UP:
ironman.moving_up = False
def check_events(ai_settings,screen,ironman,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,ironman,bullets)
elif event.type==pygame.KEYUP:
check_keyup_events(event,ironman)
def update_screen(ai_settings,screen,ironman,miebas,bullets):
screen.fill(ai_settings.bg_color)
for bullet in bullets.sprites():
bullet.draw_bullet()
ironman.blitme()
miebas.draw(screen)
pygame.display.flip()
def update_bullets(bullets):
bullets.update()
for bullet in bullets.copy():
if bullet.rect.right<=0:
bullets.remove(bullet)
print(len(bullets))
def fire_bullet(ai_settings,screen,ironman,bullets):
if len(bullets)<ai_settings.bullets_allowed:
new_bullet=Bullet(ai_settings,screen,ironman)
bullets.add(new_bullet)
def get_number_miebas_y(ai_settings,mieba_height):
available_space_y = ai_settings.screen_height - 2 * mieba_height
number_miebas_y = int(available_space_y / (0.95 * mieba_height))
return number_miebas_y
def get_number_columns(ai_settings,ironman_width,mieba_width):
available_space_x=(ai_settings.screen_width-
(3*mieba_width)-ironman_width)
number_columns=int(available_space_x)/(2*mieba_width)
return number_columns
def create_mieba(ai_settings,screen,miebas,mieba_number):
mieba = Mieba(ai_settings, screen)
mieba_height=mieba.rect.height
mieba.y = mieba_height + 1 * mieba_height * mieba_number
mieba.rect.y = mieba.y
mieba.rect.x=mieba.rect.width+2*mieba.rect.width
miebas.add(mieba)
def create_fleet(ai_settings,screen,ironman,miebas):
mieba = Mieba(ai_settings, screen)
number_miebas_y=get_number_miebas_y(ai_settings,mieba.rect.height)
number_columns=get_number_columns(ai_settings,ironman.rect.width,
mieba.rect.width)
for colmns_number in range(number_columns):
for mieba_number in range(number_miebas_y):
create_mieba(ai_settings,screen,miebas,mieba_number,
colmns_number)
the sixth
class Settings():
def __init__(self):
self.screen_width=1200
self.screen_height=800
self.bg_color=(255,255,255)
self.ironman_speed_factor=1.5
self.bullet_speed_factor=4.5
self.bullet_width=20
self.bullet_height=3
self.bullet_color=255,215,0
self.bullets_allowed=5
以上就是所有代码,但是运行总是TypeError: 'float' object cannot be interpreted as an integer
我的构思是将发射子弹的飞船放在屏幕右边中间,外星人放在左侧构建成群的。
希望大佬看后能帮忙解惑一下哪里编写不对,外星人的放置有没有什么其他方法
0
打赏
收藏
点击回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
