用户:
WMoSo岛同号查看:0 回复:0 评论:0 创建时间:2022-04-07T11:02:04
大家好,好久没在论坛冒过泡了,你们猜我在干神么鬼?
答案是……闲着没事,打几个外星人吧(这是Beta 1.0,想要测试版的盆踊们可以在评论区发个回帖)
这里先有请代码出场,热烈欢迎!![]()
![]()
![]()
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()
现在,请素材出场(下面就是一串大杂烩)
![]()
![]()
![]()
![]()




说明:星空是bg.png,三个飞碟从上到下依次是enemy1.png,ememy2.png,enemy3.png,大炮是fight.png,喵是喵,失败是over.png
不懂的小伙伴可以发回帖!