用户:马与橙查看:0 回复:0 评论:0 创建时间:2021-10-06T17:08:06
【作品展示】

【作品介绍】
都知道
【作品源代码】
from arcade import *
from PIL import Image
from arcade import key
import random
import time
# 设置图片造型 texture造型(素材,镜像, 缩放大小)
# 图片造型是由索引构成的 [0, 1]
# 设置造型需要用到 set_texture 方法
# 截图方法:set_image(截图开始坐标, 截图结束坐标)
width, height, title = 600, 500, '大鱼吃小鱼'
MOVE = 4
LEFT, RIGHT = 0, 1
class Player(Sprite):
def __init__(self, image):
super().__init__(image)
self.center_x = 300
self.center_y = 250
self.append_texture(load_texture('resource//player.png', mirrored = True,scale = 1))
def update(self):
super().update()
if self.left < 0:
self.left = 0
elif self.right > width:
self.right = width
elif self.bottom < 0:
self.bottom = 0
elif self.top > height:
self.top = height
class Enamy(Sprite):
def __init__(self, image):
super().__init__(image)
speed = random.choice([1, 2, 3, 4])
self.face = random.choice(['right', 'left'])
if self.face == 'right':
self.center_x = 660
self.change_x = -speed
if self.face == 'left':
self.center_x = -60
self.change_x = speed
self.append_texture(load_texture(image, mirrored = True,
scale = 1))
self.set_texture(1)
self.center_y = random.randint(0, height)
class Fish(arcade.Window):
# 初始化
def __init__(self, width, height, title):
super().__init__(width, height, title)
# 角色设定
self.total_time = 0
self.last_time = 0
self.create_num = 1
self.player_point = 0
self.game = 'start'
self.move = 20
self.喵er = ' '
self.size = 0
self.player_sprite_size = 2
Image.open('resource//sea.png').resize((width, height)).save('resource//new_sea.png')
arcade.set_background_color(arcade.color.SKY_BLUE)
self.background = Sprite('resource//new_sea.png')
self.background.center_x = 300
self.background.center_y = 250
self.player = Player('resource//player.png')
self.player_list = SpriteList()
self.player_list.append(self.player)
# information 设定
self.fish_list = {'resource//黄鱼.png': 1, 'resource//绿鱼.png': 3,
'resource//红鱼.png': 5,
'resource//紫鱼.png': 7, 'resource//蓝鱼.png': 9}
self.enamy_list = SpriteList()
# 逻辑推理和计算
def on_draw(self):
start_render()
self.background.draw()
self.player_list.draw()
self.enamy_list.draw()
self.create_point()
if self.player_list:
pass
else:
self.create_gameover()
def on_update(self, delta_time):
if self.game == 'start':
self.player_list.update()
self.enamy_list.update()
self.total_time = self.total_time + delta_time
if int(self.total_time) >10:
self.create_num = 2
if int(self.last_time) != int(self.total_time):
if int(self.total_time) % 1 == 0:
for create in range(int(self.create_num)):
self.create_enamy()
self.last_time = self.total_time
for enamy in self.enamy_list:
if enamy.center_x > width+ 60 or enamy.center_x < -60:
enamy.喵()
self.hit_list = check_for_collision_with_list(self.player, self.enamy_list)
if self.hit_list:
for hit in self.hit_list:
if self.player_sprite_size > hit.size:
hit.喵()
self.player_point += hit.size
self.create_point()
if 0 < self.player_point < 9:
self.player_sprite_size += 1
self.create_point()
elif 10 < self.player_point < 19:
self.player_sprite_size += 1
self.create_point()
elif 20 < self.player_point < 29:
self.player_sprite_size += 1
self.create_point()
elif 30 < self.player_point < 39:
self.player_sprite_size += 1
self.create_point()
elif 40 < self.player_point < 49:
self.player_sprite_size += 1
self.create_point()
elif 50 < self.player_point < 59:
self.player_sprite_size += 1
self.create_point()
elif 60 < self.player_point < 69:
self.player_sprite_size += 1
self.create_point()
elif 70 < self.player_point < 79:
self.player_sprite_size += 1
self.create_point()
elif 80 < self.player_point < 89:
self.player_sprite_size += 1
self.create_point()
#MOVE = 5
elif 90 < self.player_point < 99:
self.player_sprite_size += 1
self.create_point()
#MOVE = 100
elif self.player_point > 100:
self.player_sprite_size = 1000
self.player_point = 喵0000000000000000000000000
self.create_point()
#MOVE= 300
elif self.player_sprite_size < hit.size:
self.喵er = hit
self.player.喵()
self.game = 'over'
def create_enamy(self):
self.fish = random.choice(list(self.fish_list.keys()))
self.face = None
enamy_sprite = Enamy(self.fish)
self.size = self.fish_list[self.fish]
self.enamy_list.append(enamy_sprite)
enamy_sprite.size = self.size
enamy_sprite.face = self.face
def create_point(self):
draw_text('your point:{}'.format(self.player_point), 20, height - 20, color.BLACK)
if self.player_point < 99:
draw_text('your level:{}'.format(self.player_sprite_size), 20, height - 40, color.BLACK)
else:
draw_text('your level:无法--∞--估量', 20, height - 40, color.BLACK)
def create_gameover(self):
draw_text('GAME OVER', width //2 - 220, height //2, color.RED, font_size = 70)
time.sleep(0.3)
draw_text('击杀者:{}'.format(self.喵er), width //2 - 220, height //2 - 10,
color.BLACK, font_size = 10, font_name = ('simhei'))
draw_text('得分:{}'.format(self.player_point), width //2 - 220, height //2 - 30,
color.BLACK, font_size = 15, font_name = ('simhei'))
def on_key_press(self, key, modifiers):
if key == arcade.key.UP:
self.player.change_y = MOVE
elif key == arcade.key.DOWN:
self.player.change_y = -MOVE
elif key == arcade.key.LEFT:
self.player.change_x = -MOVE
self.player.set_texture(LEFT)
elif key == arcade.key.RIGHT:
self.player.set_texture(RIGHT)
self.player.change_x = MOVE
# 设置回车键 Enter截图
elif key == arcade.key.ENTER:
image = get_image(0, 0, width, height)
image.save('fish.png')
def on_key_release(self, key, modifiers):
if key == arcade.key.UP:
self.player.change_y = 0
elif key == arcade.key.DOWN:
self.player.change_y = 0
elif key == arcade.key.LEFT:
self.player.change_x = 0
elif key == arcade.key.RIGHT:
self.player.change_x = 0
if __name__ == '__main__':
game = Fish(width, height, title)
run()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn