猫史档案馆


【Python作品分享】小鱼被大鱼吃-1

用户:马与橙马与橙查看:0 回复:0 评论:0 创建时间:2021-10-06T17:08:06


【作品展示】

center_image

 

【作品介绍】

都知道

 

【作品源代码】

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


回复

上一页1 页 / 共 0下一页