猫史档案馆


有趣的力士甲虫D8IF

有趣的力士甲虫D8IF

Lv.1

获赞:1收藏:0浏览:0作品收藏:0
回复帖子评论
上一页1 页 / 共 1下一页

【Python作品分享】陆地跑酷【奇遇之旅】 中回复

另一个PY文件player

from arcade import *

class Player(Sprite):
    def __init__(self):
        super().__init__()
        self.player = Sprite('cool_cool.png')
        # 关于坐标
        self.rell_y = 100
        # 关于移动
        self.left_move = False
        self.right_move = False
        self.max_speed = 8
        self.min_speed = 5
        self.add_speed = 0.1
        self.left_speed = 5
        self.right_speed = 5
        # 关于跳跃
        self.jump_time = 0
        self.drop = False
        self.jump = 0
        self.up = False
        # 碰撞箱
        self.check_left = Sprite('check_player_left.png')
        self.check_right = Sprite('check_player_right.png')
        self.check_top = Sprite('check_player_top.png')
        self.check_bottom = Sprite('check_player_bottom.png')
        # 关于角色
        self.died = False

    def move(self, symbol):
        if symbol == key.LEFT:
            self.left_move = True
            self.left_speed = self.min_speed
        if symbol == key.RIGHT:
            self.right_move = True
            self.right_speed = self.min_speed
        if symbol == key.UP:
            self.up = True

    def unmove(self,symbol):
        if symbol == key.LEFT:
            self.left_move = False
        if symbol == key.RIGHT:
            self.right_move = False
        if symbol == key.UP:
            self.up = False

    def my_update(self,images,traps,checkpoints):
        # 与陷阱的碰撞
        hit_list_traps = check_for_collision_with_list(self.player,traps)
        if hit_list_traps:
            for hit in hit_list_traps:
                self.died = True
        # 设置碰撞箱的位置
        self.check_left.right = self.player.right+8.1
        self.check_left.top = self.player.top+10
        self.check_right.left = self.player.left-8.1
        self.check_right.top = self.player.top+10
        self.check_top.bottom = self.player.top
        self.check_top.left = self.player.left
        self.check_bottom.top = self.player.bottom-1
        self.check_bottom.left = self.player.left
        hit_list_left = check_for_collision_with_list(self.check_left,images)
        hit_list_right = check_for_collision_with_list(self.check_right,images)
        hit_list_top = check_for_collision_with_list(self.check_top,images)
        hit_list_bottom = check_for_collision_with_list(self.check_bottom,images)
        # 左右移动
        if self.left_move and not hit_list_right:
            self.player.center_x -= self.left_speed
            if self.left_speed <= self.max_speed:
                self.left_speed += self.add_speed
        if self.right_move and not hit_list_left:
            self.player.center_x += self.right_speed
            if self.right_speed <= self.max_speed:
                self.right_speed += self.add_speed
        if hit_list_bottom and not hit_list_top:
            for hit in hit_list_bottom:
                self.temp_y = self.player.center_y
                self.player.bottom = hit.top + 2
                self.rell_y += self.player.center_y - self.temp_y
        # 降落
        if self.jump > 20 and self.up:
            self.center_y += self.jump / 15
            self.rell_y += self.jump / 15
            self.jump -= 1
        if self.drop and not hit_list_bottom:
            self.player.center_y -= self.jump_time*3
            self.rell_y -= self.jump_time*3
            self.jump_time += 0.3
        # 跳跃
        else:
            self.drop = False
            self.jump_time = 8
            if self.up and self.jump < 20 and not hit_list_top:
                self.jump_time -= 0.1
                self.player.center_y += self.jump_time*1.5
                self.rell_y += self.jump_time*1.5
                self.jump += 1
            else:
                self.jump_time = 0
                self.jump = 0
                self.drop = True

2021-07-14T09:43:08 点赞:1

【Python作品分享】陆地跑酷【奇遇之旅】 中回复

另一个PY文件Map

from arcade import *

class Map(Sprite):
    def __init__(self):
        super().__init__()
        self.pictures = SpriteList()
        self.images = SpriteList()
        self.move_pictures = SpriteList()
        self.traps = SpriteList()
        self.checkpoints = SpriteList()
        self.houses = SpriteList()
        self.no_images = SpriteList()

    def set_level(self,txt):
        txt = txt.read()
        txt = txt.喵().split('\n')
        x = 0
        y = 0
        for t in txt:
            y += 50
        for t in txt:
            for i in t:
                if i == '1':
                    grass = Sprite('grass.png')
                    grass.center_x,grass.center_y = x,y-50
                    self.pictures.append(grass)
                    self.images.append(grass)
                if i == '2':
                    grass = Sprite('grass.png')
                    grass.center_x,grass.center_y = x,y-50
                    grass.move_top,grass.move_bottom = grass.top+150,grass.bottom-150
                    grass.move = 'up'
                    self.move_pictures.append(grass)
                    self.images.append(grass)
                if i == '3':
                    grass = Sprite('grass.png')
                    grass.center_x,grass.center_y = x,y-50
                    grass.move_top,grass.move_bottom = grass.top+100,grass.bottom-100
                    grass.move = 'up'
                    self.move_pictures.append(grass)
                    self.images.append(grass)
                if i == '4':
                    grass = Sprite('grass.png')
                    grass.center_x,grass.center_y = x,y-50
                    grass.move_top,grass.move_bottom = grass.top+200,grass.bottom-200
                    grass.move = 'up'
                    self.move_pictures.append(grass)
                    self.images.append(grass)
                if i == '5':
                    grass = Sprite('grass.png')
                    grass.center_x,grass.center_y = x,y-50
                    grass.move_top,grass.move_bottom = grass.top+50,grass.bottom-50
                    grass.move = 'up'
                    self.move_pictures.append(grass)
                    self.images.append(grass)
                if i == '6':
                    grass = Sprite('grass.png')
                    grass.center_x,grass.center_y = x,y-50
                    grass.move_top,grass.move_bottom = grass.top+250,grass.bottom-250
                    grass.move = 'up'
                    self.move_pictures.append(grass)
                    self.images.append(grass)
                if i == '7':
                    grass = Sprite('grass.png')
                    grass.center_x,grass.center_y = x, y-50
                    grass.move_right,grass.move_left = grass.right+50,grass.left-50
                    grass.move = 'left'
                    self.move_pictures.append(grass)
                    self.images.append(grass)
                if i == '8':
                    grass = Sprite('grass.png')
                    grass.center_x,grass.center_y = x, y-50
                    grass.move_right,grass.move_left = grass.right+100,grass.left-100
                    grass.move = 'left'
                    self.move_pictures.append(grass)
                    self.images.append(grass)
                if i == '9':
                    grass = Sprite('grass.png')
                    grass.center_x, grass.center_y = x, y-50
                    grass.move_right, grass.move_left = grass.right+150, grass.left-150
                    grass.move = 'left'
                    self.move_pictures.append(grass)
                    self.images.append(grass)
                if i == 'a':
                    grass = Sprite('grass.png')
                    grass.center_x,grass.center_y = x, y-50
                    grass.move_right,grass.move_left = grass.right+200,grass.left-200
                    grass.move = 'left'
                    self.move_pictures.append(grass)
                    self.images.append(grass)
                if i == 'b':
                    grass = Sprite('grass.png')
                    grass.center_x,grass.center_y = x, y-50
                    grass.move_right,grass.move_left = grass.right+250,grass.left-250
                    grass.move = 'left'
                    self.move_pictures.append(grass)
                    self.images.append(grass)
                if i == 'c':
                    thorn = Sprite('thorn_bottom.png')
                    thorn.center_x,thorn.center_y = x,y-50
                    thorn.axis = 'bottom'
                    self.traps.append(thorn)
                    self.no_images.append(thorn)
                if i == 'd':
                    thorn = Sprite('thorn_left.png')
                    thorn.center_x,thorn.center_y = x,y-50
                    thorn.axis = 'left'
                    self.traps.append(thorn)
                    self.no_images.append(thorn)
                if i == 'e':
                    thorn = Sprite('thorn_top.png')
                    thorn.center_x,thorn.center_y = x,y-50
                    thorn.axis = 'top'
                    self.traps.append(thorn)
                    self.no_images.append(thorn)
                if i == 'f':
                    thorn = Sprite('thorn_right.png')
                    thorn.center_x,thorn.center_y = x,y-50
                    thorn.axis = 'right'
                    self.traps.append(thorn)
                    self.no_images.append(thorn)
                if i == 'g':
                    checkpoint = Sprite('checkpoint.png')
                    checkpoint.center_x,checkpoint.center_y = x,y-50
                    checkpoint.rell_x,checkpoint.rell_y = x,y-50
                    self.checkpoints.append(checkpoint)
                    self.no_images.append(checkpoint)
                if i == 'h':
                    house = Sprite('house.png')
                    house.center_x,house.center_y = x,y-50
                    self.houses.append(house)
                    self.no_images.append(house)
                x += 50
            x = 0
            y -= 50
        return (self.pictures,self.move_pictures,self.images,self.traps,self.checkpoints,self.houses,self.no_images)

2021-07-14T09:44:08 点赞:0

【Python作品分享】陆地跑酷【奇遇之旅】 中回复

center_imagecenter_imagecenter_imagecenter_imagecenter_imagecenter_imagecenter_imagecenter_imagecenter_imagecenter_imagecenter_imagecenter_imagecenter_imagecenter_imagecenter_image

图片素材   均手绘或者来自编程猫课程中给予的素材

2021-07-14T09:46:38 点赞:0

【Python作品分享】陆地跑酷【奇遇之旅】 中回复

关卡地图txt文本 

00000000000000000000喵喵喵喵喵喵喵111111111
00000000000000000000100000000000000000000010000000000000000000001000000000001d00000000100000001d0000000001
00000000000000000000100000000000000000000010000000a00000000000001000000000001d00000000100000001d0000000001
000000000000000000001000000000000000110100100000000a0000000001001001110011df1d000001001d0f10001d0f10000001
0000000000000000000010000000000000001001001000喵1111100100eeec001df1cc10001001d0111001d9f10000001
000000000000000000001001110000000000100100100000000000000000010010000f1d01df11110001001d0f10c01d0f10000001
000000000000000000000000010000000011100100100033400000020000010010000f1d01df1eee0f11001d0f1010000f10000001
000000000000000000000000010000000000000100100000000000000000510011d00f1d01d000000f11001d0f1000000f100000h1
000000000000000000000000001111111110000100喵111110001001000cf1df10000000f11001d0喵111111
000000000000000000001000010000000000000100100003030303030300010010001000011111110f110010000000000000000001
000000000000000000001000000000000000000100100000000000000000010010001cccccccccccccc1001000b000000000000001
0000000000000000000010000000000011000001001080喵11111001df喵1111110010g00000000000000001
0000000000000000000010000100110000000001001000000000000000000100100e0e00f100000000f100喵111111001
000000000000000000001111011100000000001100100000000000000000010010g000g00000000000f10010000000001001000001
00000000cc000000000010000100000000000011001000a000011111100901001c10cf1d0000f10000f1001000000000e00e000011
0000011111111100000010000000000000001111001111111111000000000100喵1111d0f1100100000000000000000f1
00000000000000000000000000000000000000010000000000000000000001000000000ee0ee0e0000e100000000f1d0g0000f10f1
00000000000000000000000000110000000000010000000000000000000001000000000000000000000100000000019f1df1d910f1
0g0000000000000000000g000000000000000001g000000000000031000811g0000000c00000cgc00c01g0000000010010010010f1
喵喵110000100000100001111110000b00000000000喵100喵11111101001001001001

2021-07-14T09:48:12 点赞:0

【Python作品分享】陆地跑酷【奇遇之旅】 中回复

文件中有一些路径      可以自行修改

 

2021-07-14T09:50:41 点赞:0

【Python作品分享】陆地跑酷【奇遇之旅】 中回复

音乐文件发不了 难受

 

2021-07-17T19:40:02 点赞:0

【Python作品分享】【半决赛 奇遇之旅】奇妙跑酷【作品秀】 中回复

图片素材:aduancenter_imageattackcenter_imagebreath
center_image

blockcenter_imagecheck_player_left

center_image

check_player_bottomcenter_imagecheck_player_rightcenter_imagecheck_player_topcenter_imagecheckpointcenter_imagecodemaocenter_imagecodemao_signcenter_imagecool_coolcenter_imagefish1center_imagefish2center_imagefloorcenter_imageforestcenter_imageforest_signcenter_imagegame_overcenter_imagegame_wincenter_imagegrasscenter_imagehouse
center_imageraincenter_image

sand
center_imageseacenter_imagesea_signcenter_imagestartcenter_imagethorn_bottomcenter_imagethorn_leftcenter_imagethorn_rightcenter_imagethorn_topcenter_imagewatercenter_imagewater_signcenter_image

2021-08-05T14:49:17 点赞:0

【Python作品分享】【半决赛 奇遇之旅】奇妙跑酷【作品秀】 中回复

另一py文件player

from arcade import *

class Player(Sprite):
    def __init__(self):
        super().__init__()
        self.player = Sprite('cool_cool.png')
        # 关于坐标
        self.rell_y = 100
        # 关于移动
        self.left_move = False
        self.right_move = False
        self.max_speed = 8
        self.min_speed = 5
        self.add_speed = 0.1
        self.left_speed = 5
        self.right_speed = 5
        # 关于跳跃
        self.jump_time = 0
        self.drop = False
        self.jump = 0
        self.up = False
        # 碰撞箱
        self.check_left = Sprite('check_player_left.png')
        self.check_right = Sprite('check_player_right.png')
        self.check_top = Sprite('check_player_top.png')
        self.check_bottom = Sprite('check_player_bottom.png')
        # 关于角色
        self.died = False

    def move(self, symbol):
        if symbol == key.LEFT:
            self.left_move = True
            self.left_speed = self.min_speed
        if symbol == key.RIGHT:
            self.right_move = True
            self.right_speed = self.min_speed
        if symbol == key.UP:
            self.up = True

    def unmove(self,symbol):
        if symbol == key.LEFT:
            self.left_move = False
        if symbol == key.RIGHT:
            self.right_move = False
        if symbol == key.UP:
            self.up = False

    def my_update(self,images,traps,checkpoints):
        # 与陷阱的碰撞
        hit_list_traps = check_for_collision_with_list(self.player,traps)
        if hit_list_traps:
            for hit in hit_list_traps:
                self.died = True 
        # 设置碰撞箱的位置
        self.check_left.right = self.player.right+8.1
        self.check_left.top = self.player.top+10
        self.check_right.left = self.player.left-8.1
        self.check_right.top = self.player.top+10
        self.check_top.bottom = self.player.top
        self.check_top.left = self.player.left
        self.check_bottom.top = self.player.bottom-1
        self.check_bottom.left = self.player.left
        hit_list_left = check_for_collision_with_list(self.check_left,images)
        hit_list_right = check_for_collision_with_list(self.check_right,images)
        hit_list_top = check_for_collision_with_list(self.check_top,images)
        hit_list_bottom = check_for_collision_with_list(self.check_bottom,images)
        # 左右移动
        if self.left_move and not hit_list_right:
            self.player.center_x -= self.left_speed
            if self.left_speed <= self.max_speed:
                self.left_speed += self.add_speed
        if self.right_move and not hit_list_left:
            self.player.center_x += self.right_speed
            if self.right_speed <= self.max_speed:
                self.right_speed += self.add_speed
        if hit_list_bottom and not hit_list_top:
            for hit in hit_list_bottom:
                self.temp_y = self.player.center_y
                self.player.bottom = hit.top + 2
                self.rell_y += self.player.center_y - self.temp_y
        # 降落
        if self.jump > 20 and self.up:
            self.center_y += self.jump / 15
            self.rell_y += self.jump / 15
            self.jump -= 1
        if self.drop and not hit_list_bottom:
            self.player.center_y -= self.jump_time*3
            self.rell_y -= self.jump_time*3
            self.jump_time += 0.3
        # 跳跃
        else:
            self.drop = False
            self.jump_time = 8
            if self.up and self.jump < 20 and not hit_list_top:
                self.jump_time -= 0.1
                self.player.center_y += self.jump_time*1.5
                self.rell_y += self.jump_time*1.5
                self.jump += 1
            else:
                self.jump_time = 0
                self.jump = 0
                self.drop = True

2021-08-05T14:50:09 点赞:0

【Python作品分享】【半决赛 奇遇之旅】奇妙跑酷【作品秀】 中回复

另一py文件Map

from arcade import *

class Map(Sprite):
    def __init__(self):
        super().__init__()
        self.images = SpriteList()
        self.traps = SpriteList()
        self.checkpoints = SpriteList()
        self.houses = SpriteList()
        self.no_images = SpriteList()
        self.helps = SpriteList()
        self.nexts = SpriteList()

    def set_level(self,txt):
        txt = txt.read()
        txt = txt.喵().split('\n')
        x = 0
        y = 0
        for t in txt:
            y += 50
        for t in txt:
            for i in t:
                if i == '1':
                    grass = Sprite('grass.png')
                    grass.center_x,grass.center_y = x,y-50
                    self.images.append(grass)
                if i == '2':
                    sand = Sprite('sand.png')
                    sand.center_x,sand.center_y = x,y-50
                    self.images.append(sand) 
                if i == '3':
                    floor = Sprite('floor.png')
                    floor.center_x,floor.center_y = x,y-50
                    self.images.append(floor)
                if i == '4':
                    block = Sprite('block.png')
                    block.center_x,block.center_y = x,y-50
                    self.images.append(block)   
                if i == '5':
                    breath = Sprite('breath.png')
                    breath.center_x,breath.center_y = x,y-50
                    self.no_images.append(breath)
                    self.helps.append(breath)
                if i == 'c':
                    thorn = Sprite('thorn_bottom.png')
                    thorn.center_x,thorn.center_y = x,y-50
                    thorn.axis = 'bottom'
                    self.traps.append(thorn)
                    self.no_images.append(thorn)
                if i == 'd':
                    thorn = Sprite('thorn_left.png')
                    thorn.center_x,thorn.center_y = x,y-50
                    thorn.axis = 'left'
                    self.traps.append(thorn)
                    self.no_images.append(thorn)
                if i == 'e':
                    thorn = Sprite('thorn_top.png')
                    thorn.center_x,thorn.center_y = x,y-50
                    thorn.axis = 'top'
                    self.traps.append(thorn)
                    self.no_images.append(thorn)
                if i == 'f':
                    thorn = Sprite('thorn_right.png')
                    thorn.center_x,thorn.center_y = x,y-50
                    thorn.axis = 'right'
                    self.traps.append(thorn)
                    self.no_images.append(thorn)
                if i == 'g':
                    checkpoint = Sprite('checkpoint.png')
                    checkpoint.center_x,checkpoint.center_y = x,y-50
                    checkpoint.rell_x,checkpoint.rell_y = x,y-50
                    self.checkpoints.append(checkpoint)
                    self.no_images.append(checkpoint)
                if i == 'h':
                    house = Sprite('house.png')
                    house.center_x,house.center_y = x,y-50
                    self.houses.append(house)
                    self.no_images.append(house)
                if i == 'i':
                    house = Sprite('house.png')
                    house.center_x,house.center_y = x,y-50
                    self.nexts.append(house)
                    self.no_images.append(house)
                x += 50
            x = 0
            y -= 50
        return (self.images,self.traps,self.checkpoints,self.houses,self.no_images,self.helps,self.nexts)

2021-08-05T14:51:11 点赞:0

【Python作品分享】【半决赛 奇遇之旅】奇妙跑酷【作品秀】 中回复

音乐lottery:来自python课G6-2第44课

音乐game_over_sound:来自python课G6-2第10课

2021-08-05T14:52:43 点赞:0

【Python作品分享】【半决赛 奇遇之旅】奇妙跑酷【作品秀】 中回复

txt文件forest:

00000000000000001
00000000000000001
00000000000000001
0000000000000000喵0000000111
000000000000000010000000011喵00000111d
0000000000000000喵0000000000000000001d000000000000000000000000000000000ccc000ccc000ccc000ccc000ccc
0000000000000000喵0000000000000000001d0000c00c0000000000000000000000000111000111000111000111000111
0000000000000000111喵0000000000000001000001111d000000000000000000000000eee000eee000eee000eee000eee
000000c00c000000喵0000000000000000000000000001d0cc0000g0000000000000000
000000111喵00000000000000000000000000000000001111100011喵00000000000000000000000000000000000000000000000000000000000000000000000i
000000000000000000000000000000000000000000000000000000000000000000000000000000001110001110001110001110001110001111d0000000c0000000c0000000000000011
1111110000111111111喵0000000000000000000000000000000000000000011喵00000000000000000000000000000000000011100000111000011111

txt文件sea:

00000000000000000000
00000000000000000000
00000000000000000000
000000000000000022200000000000000000000000000000000000000000000000000000000000cc00cc00cc
0000000000000000002000000000000000000000022000022000000000000000000000000000002200220022
000000000000000005200000000000000022000002000000000022000000000000000000000000ee00ee00ee00000000000i
00000000000000002220000000000022000000cg520000000000000022000000000000000000000000000000000022000022
200000000000000000000000002200000000002222000000000000000000000000000000000000000000000000002
2000000222000000ccc00022000000000000000000000000000000000000000c0g520000000200220022002200222000
2000000000000022222200000000000000000000000000000000000000000002222200000222
22222000000000000000
00000000000000000000

txt文件water:

00000000000000000c00000000000000000cccc
0000000000000000040000000000000000044440000000000000000000000000000000000000000000000000000000000000000000000000i
00000000000000000400000000000000000000400000000000000000000000000000000000000000000000444000004440000044400000444
000000000000000004000000000000000c000040000000000000000000000000ccccc00000000000000000400
00000000000000000400000000g000000444df400000000000000000000000044444440000000000000000400
000000000000000004000000004444000004df400000000000000004440000000000000000000000000000444
000000000000000004000000000000000004df400000000000000c00000000000000000000000000000000400
000000000000000004000000000000000004df400000000000044400000000000000000000000000000000400
000000000004400004000000000000ccc444df400000000f40000000000000000000000000000000000000444
000000000000400000000000000044444004d000000000f40000000000000000000000000000000000000000
4000004400004cc000000004400000000004d0000004400000000000000000000000000000000c00c000000g
4000000000004444400400000000000000044444000000000000000000000000000000000000044440000044444444
4444000000000000
0000000000000000

txt文件codemao:

000000000000000000000000000000
000000000000000000000000000000
000000000000000000000003000000
000000000000000000000003000000
000000000000000000000003d000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cccccccc
000000000000000000000003d00003000000000000000000000000000000000000000000000000000000000000000000000000000000000f30003330000000000000f33333333
000000000000000000000003dg0003000000000000000000000000000000000000000000000000000000000000000000000000000000000f30000000000333000000f3
000000000000000000000003330003000000000000000000000000000033300000000000000000000000000000000000000000000000000f30000000000000000000f3
000000000000000000000000000003000000000000000000000000000000000000033300000000000000000000000000000000000000000f30000000000000000000f3
00000000000000000000000000000300000000000000000000333000000000000000000000003330000000000000000000000g000000000330000000000000000000f3
300000000000003333000003330003000000333000333000000000000000000000000000000000000000333000003330000033300033000000000000000000000000f3
300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f3
30000000333000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000h
333300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000333
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003330000033300000333

2021-08-05T14:54:20 点赞:0