
Lv.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作品分享】陆地跑酷【奇遇之旅】 中回复
关卡地图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作品分享】【半决赛 奇遇之旅】奇妙跑酷【作品秀】 中回复
图片素材:aduan
attack
breath
block
check_player_left

check_player_bottom
check_player_right
check_player_top
checkpoint
codemao
codemao_sign
cool_cool
fish1
fish2
floor
forest
forest_sign
game_over
game_win
grass
house
rain
sand
sea
sea_sign
start
thorn_bottom
thorn_left
thorn_right
thorn_top
water
water_sign
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