猫史档案馆


invalid time ♏ 时空爆裂

用户:WMoSo岛同号WMoSo岛同号查看:0 回复:0 评论:0 创建时间:2022-04-07T11:02:04


大家好,好久没在论坛冒过泡了,你们猜我在干神么鬼?

答案是……闲着没事,打几个外星人吧(这是Beta 1.0,想要测试版的盆踊们可以在评论区发个回帖)

emotion_星能猫_欢迎emotion_星能猫_欢迎emotion_星能猫_欢迎

from arcade import Sprite,Window,load_texture,SpriteList,run,check_for_collision_with_list,\
    start_render,draw_text,color,key,play_sound,load_sound
from random import randint,choice
from easygui import msgbox,enterbox
from PIL import Image
SCREEN_TITLE = 'invalid time♏时空爆裂'
BG = Image.open('bg.jpeg')
SCREEN_WIDTH=BG.width
SCREEN_HEIGHT=BG.height
BG.close()
Right=1
Left=0
msgbox('玩家可按上下左右键移动,先去撞灰色太空船,\n等到LV5时去撞飞碟,\n撞那一坨迷彩东西?别想了,你撞不过它的。\n(记得避开喵,视情况可能要多撞几次)')
class Fighter(Sprite):
    def __init__(self,image):
        super().__init__(image)
        self.center_x = SCREEN_WIDTH//2
        self.center_y=SCREEN_HEIGHT//2
        self.speed=4
        self.lev='萌新'
        self.size=2
        self.score=0
        self.append_texture(load_texture('fight.png',mirrored=True))
        self.hp=100
    def update(self):
        super().update()
        if self.left < 0:
            self.left = 0
        elif self.right > SCREEN_WIDTH:
            self.right = SCREEN_WIDTH
        if self.top > SCREEN_HEIGHT:
            self.top = SCREEN_HEIGHT
        elif self.bottom < 0:
            self.bottom = 0         
    def evolution(self, score):
        if score >= 8:
            self.size = 8
            self.speed=10
            self.lev='战神'
        elif score >= 5:
            self.size = 5
            self.speed=8
            self.lev='勇者'
class Enemy(Sprite):
    def __init__(self,image):
        super().__init__(image)
        #self.alpha=0
        self.size=0
        self.face=choice(['L','R'])
        self.speed=choice([1,2,3])
        self.fdie=True
        if self.face=='L':
            self.center_x = SCREEN_WIDTH+80
            self.append_texture(load_texture(image, mirrored=True, scale=1))
            self.set_texture(Right)
            self.change_x = -self.speed
            self.die=90-choice([20,30,40])
        if self.face=='R':
            self.center_x=-80
            self.change_x=self.speed
            self.die=90+choice([20,30,40])
        self.center_y = randint(SCREEN_HEIGHT//2, SCREEN_HEIGHT)
class Bomb(Sprite):
    def __init__(self,image):
        super().__init__(image)
        self.size=1000
        self.center_x=randint(50,SCREEN_WIDTH-50)
        self.center_y=SCREEN_HEIGHT+100
        self.change_y=-randint(1,5)
class Main(Window):
    def __init__(self,width,height,title):
        super().__init__(width,height,title)
        self.setup()
    def setup(self):
        self.lastb=0
        self.tot=0
        self.totb=0
        self.last=0
        self.totm=0
        self.lastm=0.1
        self.over=False
        self.sprites={'enemy1.png':1,'enemy2.png':4,'enemy3.png':9}
        self.bgpic='bg.png'
        self.boomer='喵.png'
        self.OV=Sprite('over.png')
        self.OV.center_x=SCREEN_WIDTH//2
        self.OV.center_y=SCREEN_HEIGHT//2
        self.bg=Sprite(self.bgpic)
        self.bg.center_x=SCREEN_WIDTH//2
        self.bg.center_y=SCREEN_HEIGHT//2
        self.player=Fighter('fight.png')
        self.player_lis=SpriteList()
        self.player_lis.append(self.player)
        self.enemy_lis=SpriteList()
        self.喵_lis=SpriteList()
        self.enemy=self.creat()
    def on_draw(self):
        start_render()
        self.bg.draw()
        self.player_lis.draw()
        self.enemy_lis.draw()
        self.喵_lis.draw()
        draw_text(f'level:LV{self.player.score}{self.player.lev}  hp:{abs(self.player.hp)}',0,SCREEN_HEIGHT-40,color.GOLD,font_size=40)
        if self.over:
            self.OV.draw()
    def on_key_press(self,symbol,modifiers):
        if symbol==key.UP:
            self.player.change_y=self.player.speed
        elif symbol==key.DOWN:
            self.player.change_y=-self.player.speed
        elif symbol==key.LEFT:
            self.player.change_x=-self.player.speed
            self.player.set_texture(Right)
        elif symbol == key.RIGHT:
            self.player.change_x=self.player.speed
            self.player.set_texture(Left)
        elif symbol == key.RETURN:
            py =enterbox('照片题目:?','#¥%3$%3@$#^:“')
            image = get_image(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)
            image.save('{}.png'.format(str(py)))

    def on_key_release(self, symbol, modifiers):
        if symbol == key.UP or symbol == key.DOWN:
            self.player.change_y=0
        elif symbol==key.LEFT or symbol==key.RIGHT:
            self.player.change_x=0
    def creat(self):
        fish=choice(list(self.sprites.keys()))
        enemy=Enemy(fish)
        enemy.size=self.sprites[fish]
        self.enemy_lis.append(enemy)
    def throw(self):
        position=choice(self.enemy_lis)
        if position.fdie:
            喵 = Bomb(self.boomer)
            喵.center_x=position.center_x
            喵.center_y=position.center_y
            喵.change_angle=10
            喵.change_x=-randint(1,7)
            喵.change_y=-randint(1,7)
            self.喵_lis.append(喵)
    def on_update(self,delta_time):
        if self.over:
            return
        if self.player.hp <= 0:
            self.over = True
            self.player.hp=0
            self.player.喵()
        self.tot += delta_time
        self.player.update()
        if int(self.tot)!=int(self.last) and int(self.tot)%4==0:
            self.last=self.tot
            self.creat()
        self.totb+=delta_time
        if int(self.totb)!=int(self.lastb) and int(self.totb)%6==0:
            self.lastb=self.totb
            self.throw()
        if int(self.totm)!=int(self.lastm) and int(self.totm)%175==0:
            play_sound(load_sound('BGM.wav'))
        self.player_lis.update()
        self.enemy_lis.update()
        self.喵_lis.update()
        for e in self.enemy_lis:
            if e.center_x<-100 or e.center_x>SCREEN_WIDTH+100 or e.center_y<=-50:
                e.喵()
        for b in self.喵_lis:
            if b.center_y<-10or b.center_x<-10 or b.center_x>SCREEN_WIDTH+10:
                b.喵()
        boom = check_for_collision_with_list(self.player,self.喵_lis)
        if boom:
            for io in boom:
                if io.size>self.player.size:
                    io.喵()
                    self.player.hp-=34
        ping=check_for_collision_with_list(self.player,self.enemy_lis)
        if ping:
            if int(self.tot) != int(self.last) and int(self.tot) % 1 == 0:
                self.last = self.tot
                for p in ping:
                    if p.size>self.player.size:
                        self.player.hp=0
                        break
                    elif p.size<self.player.size:
                        if p.fdie:
                            self.player.score+=1
                            p.angle=p.die
                            p.change_x=0
                            p.change_y=-5
                            p.fdie=False
                            break
        self.player.evolution(self.player.score)
if __name__ == '__main__':
    game=Main(SCREEN_WIDTH,SCREEN_HEIGHT,SCREEN_TITLE)
    run()
现在,请素材出场(下面就是一串大杂烩)

emotion_星能猫_欢迎emotion_星能猫_欢迎emotion_星能猫_欢迎emotion_星能猫_欢迎emotion_星能猫_欢迎emotion_星能猫_欢迎emotion_星能猫_欢迎

center_image

说明:星空是bg.png,三个飞碟从上到下依次是enemy1.png,ememy2.png,enemy3.png,大炮是fight.png,喵是喵,失败是over.png

不懂的小伙伴可以发回帖!

 


回复

上一页1 页 / 共 0下一页