鱼C论坛

 找回密码
 立即注册
查看: 1353|回复: 6

关于飞机大战第93课的问题

[复制链接]
发表于 2020-2-8 17:08:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 zltzlt 于 2020-2-8 17:14 编辑
        #画大飞机
        for each in bigenemys:
            if each.active:
                each.move()
                pygame.draw.line(screen,BLACK,\
                    (each.rect.left,each.rect.top-5),\
                                 (each.rect.right,each.rect.top-5),2)
                bl=each.HP/enemy.Bigenemy.HP
                if bl > 0.2:
                    color = GREEN
                else :
                    color = RED
                pygame.draw.line(screen,color,\
                                 (each.rect.left,each.rect.top-5),\
                                 (each.rect.left+bl*each.rect.width,each.rect.top-5),2)

为什么我写的时候 报错
    pygame.draw.line(screen,color,\
DeprecationWarning: an integer is required (got type float).  Implicit conversion to integers using __int__ is deprecated, and may be removed in a future version of Python.

提示我不能用小数
可是我看视频是可以用小数的啊
是我哪写错了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-2-8 17:08:46 | 显示全部楼层
本帖最后由 zltzlt 于 2020-2-8 17:14 编辑
import pygame
import sys
import traceback
import myplane
import enemy
import bullet

pygame.init()
pygame.mixer.init()

BLACK=(0,0,0)
RED=(255,0,0)
GREEN =(0,255,0)
size = width,height = 480,700
screen=pygame.display.set_mode(size)
######一定记得要写标题########
pygame.display.set_caption('飞机大战')
background=pygame.image.load('images/background.png').convert_alpha()


# 载入游戏音乐
pygame.mixer.music.load("sound/game_music.ogg")
pygame.mixer.music.set_volume(0.2)
bullet_sound = pygame.mixer.Sound("sound/bullet.wav")
bullet_sound.set_volume(0.2)
bomb_sound = pygame.mixer.Sound("sound/use_bomb.wav")
bomb_sound.set_volume(0.2)
supply_sound = pygame.mixer.Sound("sound/supply.wav")
supply_sound.set_volume(0.2)
get_bomb_sound = pygame.mixer.Sound("sound/get_bomb.wav")
get_bomb_sound.set_volume(0.2)
get_bullet_sound = pygame.mixer.Sound("sound/get_bullet.wav")
get_bullet_sound.set_volume(0.2)
upgrade_sound = pygame.mixer.Sound("sound/upgrade.wav")
upgrade_sound.set_volume(0.2)
enemy3_fly_sound = pygame.mixer.Sound("sound/enemy3_flying.wav")
enemy3_fly_sound.set_volume(0.2)
enemy1_down_sound = pygame.mixer.Sound("sound/enemy1_down.wav")
enemy1_down_sound.set_volume(0.1)
enemy2_down_sound = pygame.mixer.Sound("sound/enemy2_down.wav")
enemy2_down_sound.set_volume(0.2)
enemy3_down_sound = pygame.mixer.Sound("sound/enemy3_down.wav")
enemy3_down_sound.set_volume(0.5)
me_down_sound = pygame.mixer.Sound("sound/me_down.wav")
me_down_sound.set_volume(0.2)
def add_smallenemy(group1,group2,num):
    for i in range(num):
        e1=enemy.Smallenemy(size)
        group1.add(e1)
        group2.add(e1)
def add_midenemy(group1,group2,num):
    for i in range(num):
        e2=enemy.Midenemy(size)
        group1.add(e2)
        group2.add(e2)
def add_bigenemy(group1,group2,num):
    for i in range(num):
        e3=enemy.Bigenemy(size)
        group1.add(e3)
        group2.add(e3)

def main():
    #各种初始化
    pygame.mixer.music.play(-1)
    clock= pygame.time.Clock()
    
    #生成我方飞机
    me=myplane.Myplane(size)
    #生成敌机组
    enemys = pygame.sprite.Group()
    #生成小飞机
    smallenemys = pygame.sprite.Group()
    add_smallenemy(enemys,smallenemys,15)
    #生成中飞机
    midenemys = pygame.sprite.Group()
    add_midenemy(enemys,midenemys,6)
    #生成大飞机
    bigenemys = pygame.sprite.Group()
    add_bigenemy(enemys,bigenemys,2)
    #生成子弹
    bullets = []
    bullet_num = 4
    bullet_index=0
    for i in range(bullet_num):
        bullets.append(bullet.Bullet1(me.rect.midtop))
    
    
    #延时
    delay = 100
    
    switch = False
    runing=True
    while runing:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
        key_pressed = pygame.key.get_pressed()
        if key_pressed[pygame.K_w] or key_pressed[pygame.K_UP]:
            me.moveup()
        if key_pressed[pygame.K_s] or key_pressed[pygame.K_DOWN]:
            me.movedown()
        if key_pressed[pygame.K_a] or key_pressed[pygame.K_LEFT]:
            me.moveleft()
        if key_pressed[pygame.K_d] or key_pressed[pygame.K_RIGHT]:
            me.moveright()
        #设定延时 5帧翻转一次
        if delay:
            delay-=1
        else:
            delay=100
        if not (delay%5):
            switch = not switch

        screen.blit(background,(0,0))
        #画子弹_发射子弹
        if not (delay%10):
            bullets[bullet_index].reset(me.rect.midtop)
            bullet_index=(bullet_index+1)%bullet_num
        #画子弹_子弹飞行
        for each in bullets:
            if each.active:
                each.move()
                screen.blit(each.image,each.rect)
                enemy_hit = pygame.sprite.spritecollide(each,enemys,False,\
                                                        pygame.sprite.collide_mask)
                if enemy_hit:
                    each.active =False
                    for e in enemy_hit:
                        if e in midenemys or e in bigenemys:
                            e.HP-=1
                            if e.HP == 0:
                                e.active = False
                        else:
                            e.active = False
            else:
                each.reset(me.rect.midtop)
                
        #画大飞机
        for each in bigenemys:
            if each.active:
                each.move()
                pygame.draw.line(screen,BLACK,\
                    (each.rect.left,each.rect.top-5),\
                                 (each.rect.right,each.rect.top-5),2)
                bl=each.HP/enemy.Bigenemy.HP
                if bl > 0.2:
                    color = GREEN
                else :
                    color = RED
                pygame.draw.line(screen,color,\
                                 (each.rect.left,each.rect.top-5),\
                                 (each.rect.left+bl*each.rect.width,each.rect.top-5),2)
                if each.rect.bottom == -50:
                    enemy3_fly_sound.play(-1)
                if switch:
                    screen.blit(each.image1,each.rect)
                else:
                    screen.blit(each.image2,each.rect)
            #毁灭
            else:
                if not (delay%3):
                    if not (each.index%6):
                        enemy3_down_sound.play()
                    screen.blit(each.image_downs[each.index],each.rect)
                    each.index+=1
                    if not (each.index%6):
                        each.reset()
                        enemy3_fly_sound.stop()
        #画中飞机
        for each in midenemys:
            if each.active:
                each.move()
                screen.blit(each.image,each.rect)
                pygame.draw.line(screen,BLACK,\
                    (each.rect.left,each.rect.top-5),\
                                 (each.rect.right,each.rect.top-5),2)
                bl=each.HP/enemy.Midenemy.HP
                if bl > 0.2:
                    color = GREEN
                else :
                    color = RED
                pygame.draw.line(screen,color,\
                                 (each.rect.left,each.rect.top-5),\
                                 (each.rect.left+bl*each.rect.width,each.rect.top-5),2)
            #毁灭
            else:
                if not (delay%3):
                    if not (each.index%4):
                        enemy2_down_sound.play()
                    screen.blit(each.image_downs[each.index],each.rect)
                    each.index+=1
                    if not (each.index%4):
                        each.reset()
            
        #画小飞机
        for each in smallenemys:
            if each.active:
                each.move()
                screen.blit(each.image,each.rect)
            #毁灭
            else:
                if not (delay%3):
                    if not (each.index%4):
                        enemy1_down_sound.play()
                    screen.blit(each.image_downs[each.index],each.rect)
                    each.index+=1
                    if not (each.index%4):
                        each.reset()
        #检测碰撞
        enemys_down = pygame.sprite.spritecollide(me,enemys,False,pygame.sprite.collide_mask)
        if enemys_down:
            for i in enemys_down:
                i.active = False
        #画自己的飞机
        if me.active:
            if switch:
                screen.blit(me.image1,me.rect)
            else:
                screen.blit(me.image2,me.rect)
        #毁灭
        else:
            if not (delay%3):
                if not (each.index%4):
                    me_down_sound.play()
                screen.blit(each.image_downs[each.index],each.rect)
                each.index+=1
                if not (each.index%4):
                    each.reset()
        
        pygame.display.flip()
        clock.tick(60)


if __name__=='__main__':
    try:
        main()
    except SystemExit:
        pass
    except:
        traceback.print_exc()
        pygame.quit()
        input()


这是全部的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-8 17:13:30 | 显示全部楼层
@zltzlt 帮他把代码用"<>"括起来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-8 17:14:32 | 显示全部楼层
一个账号 发表于 2020-2-8 17:13
@zltzlt 帮他把代码用""括起来

收到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-9 14:50:32 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-12 16:40:03 | 显示全部楼层
求助
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-19 19:01:41 From FishC Mobile | 显示全部楼层
我的解决办法是把起始位置和终止位置分别int()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-21 06:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表