python实现超级马里奥的案例
这篇文章主要介绍python实现超级马里奥的案例,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
主代码
importpygameaspg fromsource.mainimportmain if__name__=='__main__': main() pg.quit()
main
__author__='marble_xu' importpygameaspg from.importsetup,tools from.importconstantsasc from.statesimportmain_menu,load_screen,level defmain(): game=tools.Control() state_dict={c.MAIN_MENU:main_menu.Menu(), c.LOAD_SCREEN:load_screen.LoadScreen(), c.LEVEL:level.Level(), c.GAME_OVER:load_screen.GameOver(), c.TIME_OUT:load_screen.TimeOut()} game.setup_states(state_dict,c.MAIN_MENU) game.main()
setup
__author__='marble_xu' importos importpygameaspg from.importconstantsasc from.importtools pg.init() pg.event.set_allowed([pg.KEYDOWN,pg.KEYUP,pg.QUIT]) pg.display.set_caption(c.ORIGINAL_CAPTION) SCREEN=pg.display.set_mode(c.SCREEN_SIZE) SCREEN_RECT=SCREEN.get_rect() GFX=tools.load_all_gfx(os.path.join("resources","graphics"))
tools
__author__='marble_xu' importos importpygameaspg fromabcimportABC,abstractmethod keybinding={ 'action':pg.K_s, 'jump':pg.K_a, 'left':pg.K_LEFT, 'right':pg.K_RIGHT, 'down':pg.K_DOWN } classState(): def__init__(self): self.start_time=0.0 self.current_time=0.0 self.done=False self.next=None self.persist={} @abstractmethod defstartup(self,current_time,persist): '''abstractmethod''' defcleanup(self): self.done=False returnself.persist @abstractmethod defupdate(sefl,surface,keys,current_time): '''abstractmethod''' classControl(): def__init__(self): self.screen=pg.display.get_surface() self.done=False self.clock=pg.time.Clock() self.fps=60 self.current_time=0.0 self.keys=pg.key.get_pressed() self.state_dict={} self.state_name=None self.state=None defsetup_states(self,state_dict,start_state): self.state_dict=state_dict self.state_name=start_state self.state=self.state_dict[self.state_name] defupdate(self): self.current_time=pg.time.get_ticks() ifself.state.done: self.flip_state() self.state.update(self.screen,self.keys,self.current_time) defflip_state(self): previous,self.state_name=self.state_name,self.state.next persist=self.state.cleanup() self.state=self.state_dict[self.state_name] self.state.startup(self.current_time,persist) defevent_loop(self): foreventinpg.event.get(): ifevent.type==pg.QUIT: self.done=True elifevent.type==pg.KEYDOWN: self.keys=pg.key.get_pressed() elifevent.type==pg.KEYUP: self.keys=pg.key.get_pressed() defmain(self): whilenotself.done: self.event_loop() self.update() pg.display.update() self.clock.tick(self.fps) defget_image(sheet,x,y,width,height,colorkey,scale): image=pg.Surface([width,height]) rect=image.get_rect() image.blit(sheet,(0,0),(x,y,width,height)) image.set_colorkey(colorkey) image=pg.transform.scale(image, (int(rect.width*scale), int(rect.height*scale))) returnimage defload_all_gfx(directory,colorkey=(255,0,255),accept=('.png','.jpg','.bmp','.gif')): graphics={} forpicinos.listdir(directory): name,ext=os.path.splitext(pic) ifext.lower()inaccept: img=pg.image.load(os.path.join(directory,pic)) ifimg.get_alpha(): img=img.convert_alpha() else: img=img.convert() img.set_colorkey(colorkey) graphics[name]=img returngraphics
运行成果
以上是“python实现超级马里奥的案例”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注恰卡编程网行业资讯频道!
推荐阅读
-
Python中怎么动态声明变量赋值
这篇文章将为大家详细讲解有关Python中怎么动态声明变量赋值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文...
-
python中变量的存储原理是什么
-
Python中怎么引用传递变量赋值
这篇文章将为大家详细讲解有关Python中怎么引用传递变量赋值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文...
-
python中怎么获取程序执行文件路径
python中怎么获取程序执行文件路径,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的...
-
Python中如何获取文件系统的使用率
Python中如何获取文件系统的使用率,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴...
-
Python中怎么获取文件的创建和修改时间
这篇文章将为大家详细讲解有关Python中怎么获取文件的创建和修改时间,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读...
-
python中怎么获取依赖包
今天就跟大家聊聊有关python中怎么获取依赖包,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据...
-
python怎么实现批量文件加密功能
-
python中怎么实现threading线程同步
小编给大家分享一下python中怎么实现threading线程同步,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!...
-
python下thread模块创建线程的方法
本篇内容介绍了“python下thread模块创建线程的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来...