首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

supermario!

后端 178.05KB 18 需要积分: 1
立即下载

资源介绍:

supermario!
import numpy as np import random, sys import pgzrun import time def newgame(): mario.pos=(200,HEIGHT-120) mario.vy=0 mario.time=0 mario.dir="right" mario.dead=False mario.small=True mario.s="s" mario.points=0 mario.win=False mario.start_time = time.time() # 记录游戏开始时间 for i in range(len(objs)): objs.remove(objs[0]) file = open(sys.path[0] + "\\level1.dat") i = 0 for line in file: for j in range(len(line)): if line[j]=="O": objs.append(Brick("brick.png",(j*32,32*i))) elif line[j]=="B": objs.append(Brick("brick2.png",(j*32,32*i))) elif line[j]=="D": objs.append(Block("block.png",(j*32,32*i))) elif line[j]=="Q": objs.append(Question("question.png",(j*32,32*i))) elif line[j]=="c": objs.append(Cloud("cloud.png",(j*32,32*i))) elif line[j]=="h": objs.append(Bush("hill.png",(j*32,32*i-22))) elif line[j]=="b": objs.append(Bush("bush.png",(j*32,32*i-12))) elif line[j]=="E": objs.append(Monster("enemy1.png",(j*32,32*i))) objs[-1].dir = 1 elif line[j]=="T": objs.append(Monster("turtle.png",(j*32,32*i))) objs[-1].dir = 1 elif line[j]=="p": objs.append(Coin("coin.png",(j*32,32*i))) elif line[j]=="A": objs.append(Bush("castle.png",(j*32,32*i-12))) i = i + 1 ''' 例: np.abs() 函数计算马里奥的中心点(mario.center)+其高度的一半(mario.size[1] / 2) -砖块的中心点(self.center)+其高度的一半(self.size[1] / 2)之间的距离。 如果这个距离小于15,则认为发生了顶部碰撞。 如果发生碰撞,那么马里奥的垂直速度(mario.vy)被设置为0,表示停止下落, 并且马里奥的底部位置(mario.bottom)被设置为砖块的顶部位置(self.top)。 ''' class Brick(Actor): # 定义一个砖块的类,继承自Actor def react(self): if np.abs(mario.center[1] + mario.size[1] / 2 - self.center[1] + self.size[1] / 2) < 15: # 顶部碰撞 mario.vy = 0 # mairo垂直速度设为0,停止下落 mario.bottom = self.top # mario的底部位置(mario.bottom)被设置为砖块的顶部位置(self.top) elif np.abs(mario.center[1] - mario.size[1] / 2 - self.center[1] - self.size[1] / 2) < 15: # 底部碰撞 mario.vy = 0 mario.top = self.bottom # mario的顶部位置(mario.top)被设置为砖块的底部位置(self.bottom) elif np.abs(mario.center[0] + mario.size[0] / 2 - self.center[0] + self.size[0] / 2) < 15: # 右侧碰撞 moveall(6) # 所有物体向左移动6个单位 elif np.abs(mario.center[0] - mario.size[0] / 2 - self.center[0] - self.size[0] / 2) < 15: # 左侧碰撞 moveall(-6) # 所有单位向右移动6个单位 def move(self): pass class Block(Actor): # 可以撞击的砖块 def react(self): if np.abs(mario.center[1] + mario.size[1] / 2 - self.center[1] + self.size[1] / 2) < 15: # 顶部碰撞 mario.vy = 0 mario.bottom = self.top elif np.abs(mario.center[1] - mario.size[1] / 2 - self.center[1] - self.size[1] / 2) < 15: # 底部碰撞 mario.vy = 0 mario.top = self.bottom animate(self, pos=(self.center[0], -10000)) elif np.abs(mario.center[0] + mario.size[0] / 2 - self.center[0] + self.size[0] / 2) < 15: # 右侧碰撞 moveall(6) elif np.abs(mario.center[0] - mario.size[0] / 2 - self.center[0] - self.size[0] / 2) < 15: # 左侧碰撞 moveall(-6) def move(self): pass class Coin(Actor): # 金币 def react(self): if mario.colliderect(self): objs.remove(self) mario.points=mario.points+1 # 马里奥获得硬币时加分 def move(self): pass class Mushroom(Actor): # 定义蘑菇 def react(self): if self.colliderect(mario): mario.small = False objs.remove(self) def move(self): for obj in objs: if obj != self and self.colliderect(obj) and not obj.image in ["bush.png","brick.png","hill.png","coin.png"]: self.dir = -self.dir self.x = self.x + self.dir uy = self.vy self.vy = self.vy+2000.0*0.015 self.y = self.y+(uy+self.vy)*0.5*0.015 for obj in objs: if self.colliderect(obj) and np.abs(self.center[1]+self.size[1]/2-obj.center[1]+obj.size[1]/2)<15: self.vy = 0 self.bottom = obj.top class Question(Actor): # 带“?”的盒子 def react(self): if np.abs(mario.center[1] + mario.size[1] / 2 - self.center[1] + self.size[1] / 2) < 15: # 顶部碰撞 mario.vy = 0 mario.bottom = self.top elif np.abs(mario.center[1] - mario.size[1] / 2 - self.center[1] - self.size[1] / 2) < 15: # 底部碰撞 mario.vy = 0 mario.top = self.bottom if self.image == "question.png": self.image = "question2.png" objs.append(Mushroom("mushroom.png", (self.center[0], self.center[1] - 50))) objs[-1].dir = 1 objs[-1].vy = 0 animate(objs[-1], pos=(self.center[0], self.center[1] - objs[-1].size[1] + 2)) elif np.abs(mario.center[0] + mario.size[0] / 2 - self.center[0] + self.size[0] / 2) < 15: # 右侧碰撞 moveall(6) elif np.abs(mario.center[0] - mario.size[0] / 2 - self.center[0] - self.size[0] / 2) < 15: # 左侧碰撞 moveall(-6) def move(self): pass class Cloud(Actor): # 定义云朵的移动 def react(self): pass def move(self): self.x = (self.x-1) % 7000 class Monster(Actor): # 定义怪物 def react(self): if np.abs(mario.center[1] + mario.size[1] / 2 - self.center[1] + self.size[1] / 2) < 15: # 顶部碰撞 mario.vy = 0 mario.bottom = self.top mario.points=mario.points+1 # 击杀怪物时增加分数 animate(self, pos=(self.right + 50, HEIGHT + 50)) elif np.abs(mario.center[1] - mario.size[1] / 2 - self.center[1] - self.size[1] / 2) < 15: # 底部碰撞 mario.vy = 0 mario.top = self.bottom elif np.abs(mario.center[0] + mario.size[0] / 2 - self.center[0] + self.size[0] / 2) < 15: # 右侧碰撞 if mario.small: mario.dead = True newgame() else: animate(self, pos=(self.right + 50, HEIGHT + 50)) mario.small = True elif np.abs(mario.center[0] - mario.size[0] / 2 - self.center[0] - self.size[0] / 2) < 15: # 左侧碰撞 if mario.small: mario.dead = True newgame() else: animate(self, pos=(self.right + 50, HEIGHT + 50)) mario.small = True def move(self): for obj in objs: if obj!=self and self.colliderect(obj) and not obj.image in ["bush.png","brick.png","hill.png"]: self.dir=-self.dir if self.dir==1 and self.image in ["turtle.png","turtleleft.png"]: self.image = "turtle.png" elif self.dir==-1 and self.image in ["turtle.png","turtleleft.png"]: self.i

资源文件列表:

超级玛丽.zip 大约有47个文件
  1. .idea/
  2. .idea/.gitignore 190B
  3. .idea/deployment.xml 429B
  4. .idea/inspectionProfiles/
  5. .idea/inspectionProfiles/profiles_settings.xml 174B
  6. .idea/inspectionProfiles/Project_Default.xml 503B
  7. .idea/mario.iml 318B
  8. .idea/misc.xml 270B
  9. .idea/modules.xml 269B
  10. .idea/workspace.xml 7.32KB
  11. images/
  12. images/block.png 942B
  13. images/brick.png 802B
  14. images/brick2.png 1.26KB
  15. images/bush.png 1.94KB
  16. images/castle.jpg 51.43KB
  17. images/castle.png 36.53KB
  18. images/cloud.png 4.37KB
  19. images/coin.png 232B
  20. images/enemy1.png 1.78KB
  21. images/hill.png 3.98KB
  22. images/mario.png 333B
  23. images/mariojump.png 338B
  24. images/mariojumpleft.png 338B
  25. images/marioleft.png 339B
  26. images/mariomove.png 331B
  27. images/mariomove2.png 313B
  28. images/mariomoveleft.png 326B
  29. images/mariomoveleft2.png 312B
  30. images/mushroom.png 830B
  31. images/question.png 1.29KB
  32. images/question2.png 405B
  33. images/smario.png 324B
  34. images/smariojump.png 326B
  35. images/smariojumpleft.png 324B
  36. images/smarioleft.png 328B
  37. images/smariomove.png 321B
  38. images/smariomove2.png 305B
  39. images/smariomoveleft.png 317B
  40. images/smariomoveleft2.png 307B
  41. images/sprites_super_mario.gif 1.32KB
  42. images/super-mario-bros-maker.jpg 33.66KB
  43. images/thumb-1920-860645.png 41.02KB
  44. images/turtle.png 6.4KB
  45. images/turtleleft.png 6.38KB
  46. level1.dat 2.1KB
  47. mario.py 11.03KB
0评论
提交 加载更多评论
其他资源 笔记大全,目前写到了2024-11-6之前的,暂存
2024-11-6的所有笔记
八上期中复习音频.zip
八上期中复习音频.zip
交易流水证明_用于材料证明_20241106_212352.zip
交易流水证明_用于材料证明_20241106_212352.zip
gwyzpclgj.zip
gwyzpclgj.zip
gwyzpclgj.zip
基于stm32桌面宠物
主要是通过单片机来控制舵机运行达到宠物行动的一个效果。这里是主要代码,使用时可以根据自己的需求进行改写。还可以通过智能公元对宠物添加语音控制功能。
20241106001001
20241106001001
DS18B20温度数据采集上报
DS18B20温度数据采集上报
51单片机控制三个步进电机的启动停止加protrus仿真
51单片机控制三个步进电机的启动停止加protrus仿真