猫史档案馆


【作品秀】Rogce

用户:天上的流星_tianqiVirus天上的流星_tianqiVirus查看:0 回复:1 评论:0 创建时间:2019-12-22T11:55:52


python作品秀

Rogce

 

最近我开发了一个游戏,类似于马里奥

不过比起马里奥,更像猫里奥

一个角色要到达终点,我在路上设置了许多陷阱

以下为游戏截图center_imagecenter_image

以下为游戏代码

#made by TianqiVirus
#Rogce

import pygame
import random
from PIL import Image
from json import load

width = 720
height = 540
fps = 32
title = 'a Mario who wants to eat himself'
icon = 'assets/image/blocks/icon.ico'

pygame.init()
screen = pygame.display.set_mode([width,height])#screen  4:3
pygame.display.set_caption(title)
pygame.display.set_icon(pygame.image.load(icon))
font = pygame.font.SysFont("Lucida Console",24)
bigFont = pygame.font.SysFont("SimHei",60)
timer = pygame.time.Clock()
level = 1

gemCount = 0

differenceBetweenTwoPos = 0

keepGoing = True
gameStatus = 'running'
doingTime = 0

isTeleporting = False

playersImage = ["assets/image/player/playerBase.png","assets/image/player/playerDieFace.png","assets/image/player/playerHappyFace.png","assets/image/player/blood.png"]
blocksImage = {"block":[pygame.image.load("assets/image/blocks/block.png")],
				"mystery":[pygame.image.load("assets/image/blocks/mystery.png")],
				"glass":[pygame.image.load("assets/image/blocks/glass.png")],
				"used":[pygame.image.load("assets/image/blocks/used.png")],
				"air":[pygame.image.load("assets/image/blocks/air.png")],
				"brick":[pygame.image.load("assets/image/blocks/brick.png")],
				"pillar":[pygame.image.load("assets/image/blocks/pillar.png")],
				"pillarTop":[pygame.image.load("assets/image/blocks/pillarTop.png")],
				"castle":[pygame.image.load("assets/image/blocks/castle.png")]}
teleportImage = {"blue":pygame.image.load("assets/image/blocks/teleport1.png"),
				"green":pygame.image.load("assets/image/blocks/teleport2.png"),
				"orange":pygame.image.load("assets/image/blocks/teleport3.png"),
				"red":pygame.image.load("assets/image/blocks/teleport4.png")}
bgms = ["assets/sound/bgm1.wav"]
soundEffects = {"restart":"assets/sound/restart.wav",
				"win":"assets/sound/win.wav"}
lavas = pygame.image.load("assets/image/blocks/lavas.png")
gemImagePath = "assets/image/stuff/gem.png"
spikeImage = pygame.transform.喵oothscale(pygame.image.load("assets/image/stuff/spike.png"),(36,36))
background = pygame.transform.喵oothscale(pygame.image.load("assets/image/background/noteBook.jpg"),(width,height))

with open("assets/levels/1.json") as f:
		data = load(f)

class player:
	def __init__(self,x,y,images):
		self.x = x
		self.y = y
		self.xChange = 0
		self.yChange = 0
		self.differenceBetweenTwoPosChange = 0
		self.imagePaths = images
		self.status = 'alive'
		self.additive = 'nothing'
		self.facing = 'right'
		self.image = self.getImage()
		self.rect = pygame.Rect(self.x,self.y,36,36)
		self.gameRunningTime = 0
		self.tempHitTime = 0
		self.jumpable = False
	def getImage(self):
		if self.status == 'alive':
			if self.facing == 'left':
				imgT = Image.open(self.imagePaths[0])
				imgT.paste(Image.open(self.imagePaths[2]),(3,8))
				imgT.save('assets/image/player/tempLevel1.png')
			elif self.facing == 'right':
				imgT = Image.open(self.imagePaths[0])
				imgT.paste(Image.open(self.imagePaths[2]),(9,8))
				imgT.save('assets/image/player/tempLevel1.png')
		elif self.status == "dead":
			imgT = Image.open(self.imagePaths[0])
			imgT.paste(Image.open(self.imagePaths[1]),(9,6))
			imgT.save('assets/image/player/tempLevel1.png')

		if self.additive == "nothing":
			imgT = Image.open('assets/image/player/tempLevel1.png')	
			imgT.save('assets/image/player/tempLevel2.png')

		return pygame.transform.scale(pygame.image.load("assets/image/player/tempLevel2.png"),(36,36))
	def stop(self):
		self.xChange = 0
		self.differenceBetweenTwoPosChange = 0
	def moving(self,key):
		global differenceBetweenTwoPos
		if key[0]:
			self.facing = 'left'
			if self.x>0:
				self.xChange=-3
		
		if key[2] and self.jumpable:
			self.yChange = -10
		if key[1]:
			self.facing = 'right'
			self.xChange=3
			if self.x - differenceBetweenTwoPos>=width//2:
				self.differenceBetweenTwoPosChange=3
	def playerUpdate(self,scereen,pressKey):
		if pressKey[0] or pressKey[1] or pressKey[2]:
			self.moving(pressKey)

		global differenceBetweenTwoPos,isTeleporting

		if self.yChange>10:
			self.yChange = 10
		elif self.yChange<-10:
			self.yChange = -10

		self.image = self.getImage()

		self.jumpable = False
		if not isTeleporting:
			self.yChange+=0.4
			self.x+=self.xChange
			self.y+=self.yChange
			differenceBetweenTwoPos+=self.differenceBetweenTwoPosChange

		if self.y>=612:
			global gameStatus
			gameStatus = "gameover"
			pygame.mixer.music.stop()

		self.rect = pygame.Rect(self.x,self.y,36,36)	
		if not isTeleporting:
			if self.x- differenceBetweenTwoPos>width//2:
				differenceBetweenTwoPos+=3
			screen.blit(self.image,(self.x- differenceBetweenTwoPos,self.y))

class blocksClass:
	def __init__(self,x,y,images):
		self.x = x
		self.y = y
		self.showX = x
		self.showY = y
		self.images = images
		self.crusherLastx = 0
		self.size = 36
		self.nowImage = pygame.transform.scale(self.images[0],(self.size,self.size))
		self.rect = pygame.Rect(x,y,self.size,self.size)
		self.gameRunningTime = 0
	def update(self,crusher,screen,onBlockDoing,underBlockDoing,updatingAdd):
		global differenceBetweenTwoPos,isTeleporting
		self.showX = self.x - differenceBetweenTwoPos
		self.showY = self.y
		self.gameRunningTime +=1
		if self.rect.colliderect(crusher.rect) and not isTeleporting:
			if (crusher.x>self.x-30) and (crusher.x<self.x+self.size-6):
				if crusher.y<self.y-24:
					crusher.yChange = -0.4
					crusher.y = self.y-35
					crusher.jumpable = True
					crusher.tempHitTime+=1
					self.onBlockDoing()
				elif crusher.y>self.y+self.size-24:
					crusher.y = self.y+36
					crusher.yChange=0.4
					self.underBlockDoing()
				else:
					crusher.xChange = 0
					if crusher.x<self.x-24:
						crusher.x = self.x-36
					elif crusher.x>self.x+self.size-12:
						crusher.x = self.x+self.size
			elif not(crusher.y>self.y+self.size or crusher.y<self.y):
				crusher.xChange = 0
				if crusher.x<self.x-24:
					crusher.x = self.x-36
				elif crusher.x>self.x+self.size-12:
					crusher.x = self.x+self.size
		self.updatingAdd()
		self.crusherLastx = crusher.x
		screen.blit(self.nowImage,(self.showX,self.showY))

class normalBlock(blocksClass):
	def __init__(self,x,y,images,worldType):
		super().__init__(x,y,images)
		self.nowImage = pygame.transform.scale(self.images[worldType],(self.size,self.size))
		self.rect = pygame.Rect(x,y,self.size,self.size)
	def onBlockDoing(self):
		pass
	def underBlockDoing(self):
		pass
	def updatingAdd(self):
		self.rect = pygame.Rect(self.x,self.y,self.size,self.size)

	def blockUpdate(self,crusher,screen):
		self.update(crusher,screen,self.onBlockDoing,self.underBlockDoing,self.updatingAdd)

class glassBlock(blocksClass):
	def __init__(self,x,y,images,worldType):
		super().__init__(x,y,images)
		self.nowImage = pygame.transform.scale(self.images[worldType],(self.size,self.size))
		self.rect = pygame.Rect(x,y,self.size,self.size)
		self.fallVal = 20
		self.startFall = False
		self.isNotUsing = False
		self.yChange = 0

	def onBlockDoing(self):
		self.startFall = True
	def underBlockDoing(self):
		pass

	def updatingAdd(self):
		self.rect = pygame.Rect(self.x,self.y,self.size,self.size)
		if self.startFall:
			self.fallVal-=1
			if self.fallVal<=0:
				self.yChange+=1
				self.rect = pygame.Rect(-100,-100,1,1)
		self.y+=self.yChange
		if self.y>600 and self.startFall:
			self.isNotUsing = True
		if self.isNotUsing:
			self.x = -100
			self.y = -100

	def blockUpdate(self,crusher,screen):
		self.update(crusher,screen,self.onBlockDoing,self.underBlockDoing,self.updatingAdd)

class mysteryBlock(blocksClass):
	def __init__(self,x,y,images,worldType):
		super().__init__(x,y,images)
		self.nowImage = pygame.transform.scale(self.images[worldType],(self.size,self.size))
		self.rect = pygame.Rect(x,y,self.size,self.size)
		self.opened = False

	def onBlockDoing(self):
		pass
	def underBlockDoing(self):
		global blocksImage
		self.opened = True
		self.nowImage = pygame.transform.scale(blocksImage["used"][0],(36,36))

	def updatingAdd(self):
		self.rect = pygame.Rect(self.x,self.y,self.size,self.size)

	def blockUpdate(self,crusher,screen):
		self.update(crusher,screen,self.onBlockDoing,self.underBlockDoing,self.updatingAdd)

class hidingBlock(blocksClass):
	def __init__(self,x,y,images,worldType):
		super().__init__(x,y,images)
		self.nowImage = pygame.transform.scale(self.images[worldType],(self.size,self.size))
		self.exaRect = pygame.Rect(x,y,self.size,self.size)
		self.rect = pygame.Rect(10000,10000,self.size,self.size)#等到碰出时才具备普通方块的特性
		self.crusher = None
		self.crusherLasty = 0
	def onBlockDoing(self):
		pass
	def underBlockDoing(self):
		pass

	def updatingAdd(self):
		global blocksImage
		if self.exaRect.colliderect(self.crusher.rect):
			if self.crusherLasty > self.y+self.size and (self.crusher.x>=self.x-self.size//3*2) and (self.crusher.x<self.x+self.size-self.size//3):
				self.nowImage = pygame.transform.scale(blocksImage["used"][0],(36,36))
				self.rect = self.exaRect

	def blockUpdate(self,crusher,screen):
		self.crusher = crusher
		self.update(crusher,screen,self.onBlockDoing,self.underBlockDoing,self.updatingAdd)
		self.crusherLasty = crusher.y

class airBlock(blocksClass):
	def __init__(self,x,y,images,worldType):
		super().__init__(x,y,images)
		self.nowImage = pygame.transform.scale(self.images[worldType],(self.size,self.size))
	def blockUpdate(self,crusher,screen):
		global differenceBetweenTwoPos
		screen.blit(self.nowImage,(self.x - differenceBetweenTwoPos,self.y))

class sandBlock(blocksClass):
	def __init__(self,x,y,images,worldType):
		super().__init__(x,y,images)
		self.nowImage = pygame.transform.scale(self.images[worldType],(self.size,self.size))
		self.rect = pygame.Rect(x,y,self.size,self.size)
		self.brakeVal = 5
		self.startBrake = False

	def onBlockDoing(self):
		self.startBrake = True
	def underBlockDoing(self):
		self.startBrake = True

	def updatingAdd(self):
		self.rect = pygame.Rect(self.x,self.y,self.size,self.size)
		if self.startBrake:
			self.brakeVal-=1
			if self.brakeVal<=0:
				self.x = -100
				self.y = -100
	def blockUpdate(self,crusher,screen):
		self.update(crusher,screen,self.onBlockDoing,self.underBlockDoing,self.updatingAdd)

class gemClass:
	def __init__(self,x,y):
		global differenceBetweenTwoPos,gemImagePath
		self.x = x
		self.y = y
		self.showX = self.x - differenceBetweenTwoPos
		self.size = 24
		self.image = pygame.transform.scale(pygame.image.load(gemImagePath),(24,24))
		self.rect = pygame.Rect(self.x,self.y,self.size,self.size)
	def gemUpdate(self,screen,crusher):
		global differenceBetweenTwoPos,isTeleporting
		self.showX = self.x - differenceBetweenTwoPos
		self.rect = pygame.Rect(self.x,self.y,self.size,self.size)
		if self.rect.colliderect(crusher.rect) and not isTeleporting:
			global gemCount
			gemCount+=1
			self.x = 10000
			self.y = 10000
		screen.blit(self.image,(self.showX,self.y))

class spikeClass:
	def __init__(self,x,y):
		global differenceBetweenTwoPos,spikeImage
		self.x = x
		self.y = y
		self.showX = self.x - differenceBetweenTwoPos
		self.w = 24
		self.h = 20
		self.Timage = spikeImage
		self.Nimage = blocksImage["air"][0]
		self.rect = pygame.Rect(self.x+6,self.y+16,self.w,self.h)
	def spikeUpdate(self,screen,crusher):
		global differenceBetweenTwoPos,isTeleporting
		self.showX = self.x - differenceBetweenTwoPos
		self.rect = pygame.Rect(self.x+6,self.y+16,self.w,self.h)
		if self.rect.colliderect(crusher.rect) and not isTeleporting:
			self.Nimage = self.Timage
			global gameStatus
			gameStatus = 'gameover'
			crusher.status = 'dead'
		screen.blit(self.Nimage,(self.showX,self.y))

class teleportClass:
	def __init__(self,x,y,tox,toy,image):
		self.x = x
		self.y = y
		self.tox = tox
		self.toy = toy
		self.size = 24
		self.isTeleporting = False
		self.Nimage = pygame.transform.scale(image,(36,36))
		self.rect = pygame.Rect(self.x+6,self.y+6,self.size,self.size)
	def teleportUpdate(self,screen,crusher):
		global differenceBetweenTwoPos,isTeleporting
		self.rect = pygame.Rect(self.x+6,self.y+6,self.size,self.size)
		if self.rect.colliderect(crusher.rect) and not isTeleporting:
			isTeleporting = True
			self.isTeleporting = True
		if self.isTeleporting:
			if crusher.x//3<self.tox//3:
				crusher.x+=3
			elif crusher.x//3>self.tox//3:
				crusher.x-=3

			if crusher.y//3<self.toy//3-1:
				crusher.y+=3
			elif crusher.y//3>self.toy//3-1:
				crusher.y-=3

			if differenceBetweenTwoPos//2 < (self.tox-width//2)//2:
				differenceBetweenTwoPos+=2
			elif differenceBetweenTwoPos//2 > (self.tox-width//2)//2:
				differenceBetweenTwoPos-=2

			if crusher.x//3 == self.tox//3 and crusher.y//3 == self.toy//3-1:
				isTeleporting = False
				self.isTeleporting = False

		screen.blit(self.Nimage,(self.x - differenceBetweenTwoPos,self.y))

Mario = player(data[level-1][0][0],data[level-1][0][1],playersImage)
blocks = []
gems = []
spikes = []
winPoint = []
teleportDoors = []

def getLevel():
	global Mario,blocks,differenceBetweenTwoPos,gems,spikes,winPoint,marioPressKeyInfo,level,teleportDoors,isTeleporting
	blocks = []
	gems = []
	spikes = []
	winPoint = []
	teleportDoors = []
	differenceBetweenTwoPos = 0
	isTeleporting = False
	Mario = player(data[level-1][0][0],data[level-1][0][1],playersImage)
	winPoint = data[level-1][-1]
	marioPressKeyInfo = [False,False,False]
	Mario.status = 'alive'
	for i in data[level-1][1]:
		if i[2] == "block":
			blocks.append(normalBlock(i[0],i[1],blocksImage[i[3]],0))
		elif i[2] == "mystery":
			blocks.append(mysteryBlock(i[0],i[1],blocksImage[i[3]],0))
		elif i[2] == "glass":
			blocks.append(glassBlock(i[0],i[1],blocksImage[i[3]],0))
		elif i[2] == "hiding":
			blocks.append(hidingBlock(i[0],i[1],blocksImage[i[3]],0))
		elif i[2] == "air":
			blocks.append(airBlock(i[0],i[1],blocksImage[i[3]],0))
		elif i[2] == "sand":
			blocks.append(sandBlock(i[0],i[1],blocksImage[i[3]],0))
	for j in data[level-1][2]:
		gems.append(gemClass(j[0],j[1]))
	for k in data[level-1][3]:
		spikes.append(spikeClass(k[0],k[1]))
	for l in data[level-1][4]:
		teleportDoors.append(teleportClass(l[0],l[1],l[2],l[3],teleportImage[l[4]]))


getLevel()
marioPressKeyInfo = [False,False,False]
gameOverTimerTemp = 120
winTimerTemp = 120

while keepGoing:
	pygame.mixer.music.set_volume(0.2)
	doingTime+=1
	if gameStatus == 'running':
		if pygame.mixer.music.get_busy()==False:
			pygame.mixer.music.load(bgms[0])
			pygame.mixer.music.play()

		for event in pygame.event.get():
			if event.type == pygame.QUIT:
				keepGoing = False
			if event.type == pygame.KEYDOWN:
				if event.key == 276:
					marioPressKeyInfo[0] = True
				if event.key == 275:
					marioPressKeyInfo[1] = True
				if event.key == 273:
					marioPressKeyInfo[2] = True
			if event.type == pygame.KEYUP:
				if event.key == 276:
					marioPressKeyInfo[0] = False
				if event.key == 275:
					marioPressKeyInfo[1] = False
				if event.key == 273:
					marioPressKeyInfo[2] = False
				Mario.stop()
				if event.key == pygame.K_q:
					gameStatus = 'gameover'
					Mario.status = "dead"
		if isTeleporting:
			marioPressKeyInfo = [False,False,False]

		if Mario.x>winPoint[0]:
			gameStatus = 'win'

		screen.blit(background,(0,0))
		for i in blocks:
			if i.x>=-108+differenceBetweenTwoPos and i.x<width+108+differenceBetweenTwoPos:
				i.blockUpdate(Mario,screen)
		for j in gems:
			if j.x>=-108+differenceBetweenTwoPos and j.x<width+108+differenceBetweenTwoPos:
				j.gemUpdate(screen,Mario)
		for k in spikes:
			if k.x>=-108+differenceBetweenTwoPos and k.x<width+108+differenceBetweenTwoPos:
				k.spikeUpdate(screen,Mario)
		for l in teleportDoors:
			if l.x>=-108+differenceBetweenTwoPos and l.x<width+108+differenceBetweenTwoPos:
				l.teleportUpdate(screen,Mario)
		screen.blit(pygame.transform.scale(blocksImage["castle"][0],(108,108)),(winPoint[0]-36-differenceBetweenTwoPos,winPoint[1]-72))
		Mario.playerUpdate(screen,marioPressKeyInfo)

	elif gameStatus == 'gameover' :
		if gameOverTimerTemp == 120:
			pygame.mixer.music.stop()
		elif gameOverTimerTemp == 96:
			pygame.mixer.music.stop()
			pygame.mixer.music.load(soundEffects["restart"])
			pygame.mixer.music.play()
		for event in pygame.event.get():
			if event.type == pygame.QUIT:
				keepGoing = False
		
		gameOverTimerTemp-=1
		if gameOverTimerTemp <= 0:
			getLevel()
			gameOverTimerTemp = 120
			gameStatus ='running'
		if gameOverTimerTemp<=96:
			screen.fill((0,0,0))
			mainWord = 	font.render("The new turn is going to begin",True,(255,255,255))
			screen.blit(mainWord,(width//2-mainWord.get_rect().width//2,200))
	elif gameStatus == 'win' :
		if winTimerTemp == 120:
			pygame.mixer.music.stop()
		elif winTimerTemp == 96:
			pygame.mixer.music.stop()
			pygame.mixer.music.load(soundEffects["win"])
			pygame.mixer.music.play()
		for event in pygame.event.get():
			if event.type == pygame.QUIT:
				keepGoing = False
		winTimerTemp-=1
		if winTimerTemp<=0:
			level+=1
			getLevel()
			winTimerTemp = 120
			gameStatus ='running'
		if winTimerTemp<=96:
			screen.fill((0,0,0))
			mainWord = 	font.render("The new turn is going to begin",True,(255,255,255))
			screen.blit(mainWord,(width//2-mainWord.get_rect().width//2,200))

	pygame.display.update()
	timer.tick(fps)

pygame.quit()

共500多行

这里,我用了继承的方式生成方块

用传统的json文件保存关卡文件

以下为关卡文件

[
[
	[0,396],
	[[0,504,"block","block"],[36,504,"block","block"],[72,504,"block","block"],[108,504,"block","block"],[144,504,"block","block"],[180,504,"block","block"],
		[216,504,"block","block"],[252,504,"block","block"],[288,504,"block","block"],[72,396,"block","block"],[144,396,"block","block"],[216,396,"block","block"],
		[504,504,"block","block"],[540,468,"block","block"],[540,432,"block","block"],[540,396,"block","block"],[540,360,"block","block"],
		[8喵,360,"block","block"],[972,504,"block","block"],[972,324,"block","block"],[1116,504,"block","block"],[1116,324,"block","block"],[1152,468,"block","block"],
		[612,504,"block","block"],[喵8,504,"block","block"],[684,324,"block","block"],[756,504,"block","block"],[1188,504,"block","block"],[1440,468,"block","block"],
		[1332,324,"block","block"],[1368,324,"block","block"],[1512,504,"block","block"],[1548,504,"block","block"],[1584,504,"block","block"],[1620,504,"block","block"],
		[1656,504,"block","block"],[1656,360,"block","used"],[1656,324,"block","used"],[1656,288,"block","used"],[1692,504,"block","block"],[1728,504,"block","block"],
		[17喵,504,"block","block"],[17喵,468,"block","brick"],[1800,504,"block","block"],[1836,504,"block","block"],[1872,504,"block","block"],[1908,504,"block","block"],
		[1944,504,"block","block"],[1980,504,"block","block"],
	[108,396,"mystery","mystery"],[180,396,"mystery","mystery"],[144,288,"mystery","mystery"],[1656,432,"mystery","mystery"],
	[324,288,"glass","glass"],[360,288,"glass","glass"],[396,288,"glass","glass"],[432,288,"glass","glass"],[468,288,"glass","glass"],[612,360,"glass","glass"],
		[720,324,"glass","glass"],[828,504,"glass","glass"],[8喵,504,"glass","glass"],[936,468,"glass","glass"],[1188,432,"glass","glass"],[1296,504,"glass","glass"],
		[1332,504,"glass","glass"],[1368,504,"glass","glass"],[1404,504,"glass","glass"],[396,504,"glass","glass"],[1584,468,"glass","glass"],
	[108,432,"hiding","air"],[324,396,"hiding","air"],[900,324,"hiding","air"],[1224,432,"hiding","air"],[1188,324,"hiding","air"],[1332,432,"hiding","air"],
		[1368,432,"hiding","air"],[1404,432,"hiding","air"],[1620,360,"hiding","air"],
	[17喵,432,"air","pillar"],[17喵,396,"air","pillar"],[17喵,360,"air","pillar"],[17喵,324,"air","pillar"],[17喵,288,"air","pillarTop"]],
	[[402,480],[654,480],[762,480],[942,444],[1194,480],[1410,480],[1518,444],[1662,480]],
	[[612,468],[1512,468],[1548,468],[1584,468],[1692,468]],
	[[-100,-100,-100,-100,"blue"]],
	[[288,432,"Hatten","left"],[1656,396,"normal","left"]],
	[1908,468]
],
[
	[0,396],
	[[0,504,"block","block"],[36,504,"block","block"],[72,504,"block","block"],[108,504,"block","block"],[144,504,"block","block"],[180,504,"block","block"],
		[216,504,"block","block"],[432,504,"block","block"],[468,504,"block","block"],[504,504,"block","block"],[684,468,"block","block"],[720,396,"block","block"],
		[756,324,"block","block"],[792,396,"block","block"],[8喵,468,"block","block"],[8喵,288,"block","block"],[1008,288,"block","block"],[1368,504,"block","block"],
		[1404,504,"block","block"],[1512,504,"block","block"],[1548,504,"block","block"],[1584,504,"block","mystery"],[1620,504,"block","block"],[1656,504,"block","mystery"],
		[1692,504,"block","block"],[1728,504,"block","mystery"],[17喵,504,"block","block"],[1980,504,"block","block"],[2016,504,"block","block"],[2052,504,"block","block"],
		[2088,504,"block","block"],[2124,504,"block","block"],[2124,468,"block","brick"],[2160,504,"block","block"],[2196,504,"block","block"],[2232,504,"block","block"],
		[2268,504,"block","block"],[2304,504,"block","block"],[2340,504,"block","block"],
	[180,432,"glass","glass"],[216,432,"glass","glass"],[540,396,"glass","glass"],[612,432,"glass","glass"],[612,288,"glass","glass"],[720,288,"glass","glass"],
		[720,468,"glass","glass"],[756,468,"glass","glass"],[792,468,"glass","glass"],[828,432,"glass","glass"],[900,468,"glass","glass"],[936,396,"glass","glass"],
		[972,468,"glass","glass"],[1008,468,"glass","block"],[1620,360,"glass","glass"],[1728,324,"glass","glass"],
	[576,288,"hiding","air"],[756,396,"hiding","air"],[900,288,"hiding","air"],[972,396,"hiding","air"],[1512,396,"hiding","air"],
	[288,504,"sand","brick"],[324,504,"sand","brick"],[360,504,"sand","brick"],
	[2124,432,"air","pillar"],[2124,396,"air","pillar"],[2124,360,"air","pillar"],[2124,324,"air","pillar"],[2124,288,"air","pillarTop"]],
	[[294,480],[78,480],[690,228],[762,444],[798,372]],
	[[-100,-100]],
	[[216,468,469,468,"blue"],[432,468,179,468,"blue"],[720,360,900,252,"blue"],[8喵,252,756,355,"blue"],[756,288,900,396,"green"],[8喵,432,792,288,"green"],[900,144,1404,468,"orange"],
		[1368,468,900,180,"orange"],[1584,468,1200,200,"red"],[1200,144,-100,500,"red"],[1656,468,1872,360,"red"],[1872,324,1872,600,"red"],[1728,468,2016,468,"red"],[1980,468,17喵,468,"red"]],
	[[-100,600,"normal","left"]],
	[2268,468]
],
[
	[0,396],
	[[36,468,"block","greenLand",72],[108,468,"block","greenLand",72],[360,468,"block","greenLand",72],[432,468,"block","block"],[468,468,"block","half"],[504,468,"block","half"],
		[540,468,"block","half"],[576,468,"block","block"],[216,324,"block","block"],
	[0,468,"glass","glass"],
	[180,468,"sand","block"],[216,468,"sand","half"],[252,468,"sand","half"],[288,468,"sand","half"],[324,468,"sand","block"],
	[108,360,"hiding","air"],[144,252,"hiding","air"]],
	[[258,444],[186,228]],
	[[216,324]],
	[[-100,-100,-100,-100,"blue"]],
	[[-100,600,"normal","left"]],
	[1908,468]
],
[
	[0,396],
	[[0,468,"block","greenLand",72],
	[72,504,"block","block"],[108,504,"block","block"],[144,504,"block","block"],[180,504,"block","block"],
		[216,504,"block","block"],[252,504,"block","block"],[288,504,"block","block"],[324,504,"block","block"],[360,504,"block","block"],[396,504,"block","block"],
		[432,504,"block","block"],[468,504,"block","block"],[504,504,"block","block"],[504,540,"block","block"],[504,576,"block","block"],
	[108,396,"mystery","mystery"]],
	[[402,480],[654,480],[762,480],[942,444],[1194,480],[1410,480]],
	[[612,468]],
	[[-100,-100,-100,-100,"blue"]],
	[[-100,600,"normal","left"]],
	[1908,468]
]
]

 

本帖内所有代码,思想仅供参考,请勿用于盈利用途

id:小鹿工作室_天上的流星

如果喜欢点个赞再走呗


回复

上一页1 页 / 共 1下一页
无音音音音无音音音音

大佬!流弊!

点赞0


评论