作者:小K 来源:麦叔编程 国庆过完之后上班有没有感觉好累?根本不想上班的节奏? 作为摸鱼弟的小K,今天再次给大家带来了一个摸鱼神器,哦不,学习神器! 这次推荐的是拥有29款高端游戏的Games库,在github上4。1k拥有stars的开源项目。 链接我就不放了,怕被和谐掉,如果想看官方文档,在github上搜cpgames就能搜到。推荐原因 还记得上次的摸鱼攻略给大家推荐的freegames库吗? 摸鱼传送门Python摸鱼攻略【093】 相比freegames库,这次Games给我们带来的简直就是大作。 freegames库中的贪吃蛇: Games库中的贪吃蛇: 虽说玩起来也差不多,但实际体验上Games的贪吃蛇有计分板和游戏BGM,体验还是有所提升的 其中我最喜欢的大作:愤怒的小鸟 直接把操作的物理引擎拉满,是我玩过最符合牛顿力学的Python游戏。游戏目录 最大的推荐理由:安装方便,有Python环境就能用! 使用攻略 上文说了一大堆他的好,好像忘记如何教大家使用了。 如果你的电脑上有安装Python环境,只需要两步就能进入游戏了。第一步安装pipinstallcpgames 一条命令安装Games库,不作过多的解释。第二步运行脚本进入游戏 github上的脚本不能让我自由地选择玩啥游戏,而是随机给我分配,这肯定会让我不爽的。importrandomfromcpgamesimportcpgamesgameclientcpgames。CPGames()allsupportsgameclient。getallsupported()gameclient。execute(random。choice(list(allsupports。values()))) 于是我在他的代码上进行了修改,改成了我想玩啥就选啥。 修改后:importsysfromcpgamesimportcpgamesgameclientcpgames。CPGames()allsupportsgameclient。getallsupported()gamesdict(enumerate(list(allsupports。values()),start1))print(64)fori,elementingames。items():print(f游戏编号:{i}游戏名称:{element})print(64)try:gamecodeint(input(请输出游戏编号,回车后开始游戏:))ifgamecodelen(games):print(请重新运行脚本并输入正确的游戏编号)sys。exit()exceptExceptionase:print(请重新运行脚本并输入正确的游戏编号)sys。exit()gameclient。execute(games〔gamecode〕) 运行脚本之后,会让你选择想玩的游戏,输入对应的游戏编号即可,pygame2。1。2(SDL2。0。18,Python3。9。9)Hellofromthepygamecommunity。https:www。pygame。orgcontribute。html游戏编号:1游戏名称:ski游戏编号:2游戏名称:maze。。。。。。游戏编号:28游戏名称:twozerofoureight游戏编号:29游戏名称:voicecontrolpikachu请输出游戏编号,回车后开始游戏: 入门Python游戏开发 如果你已经看到这,说明你对Python制作的游戏有一定的兴趣的。 这个库对于想入门Python游戏开发或者其他语言的游戏开发来说,简直就是一个宝藏。 29款游戏基本覆盖了很多主流游戏的基本逻辑。 就像上文中我提到,那款愤怒的小鸟,物理引擎非常的棒,我也很好奇他是如何实现的。 我就可以去查看他的源码是如何实现这个游戏的。 令我没想到的是,这个愤怒的小鸟的代码量只有100行,抛开配置信息,游戏主逻辑只有50多行。Function:愤怒的小鸟importosimportpygamefrom。。。utilsimportQuitGamefrom。。baseimportPygameBaseGamefrom。modulesimportGameLevels,Pig,Bird,Block,Slingshot,Slab,Button,Label配置类classConfig():根目录rootdiros。path。split(os。path。abspath(file))〔0〕FPSFPS60屏幕大小SCREENSIZE(1800,700)标题TITLE愤怒的小鸟Charles的皮卡丘一些颜色定义BACKGROUNDCOLOR(51,51,51)背景音乐路径BGMPATHos。path。join(rootdir,resourcesaudiosbgm。ogg)游戏图片路径IMAGEPATHSDICT{pig:〔os。path。join(rootdir,resourcesimagespig1。png),os。path。join(rootdir,resourcesimagespig2。png),os。path。join(rootdir,resourcesimagespigdamaged。png),〕,bird:〔os。path。join(rootdir,resourcesimagesbird。png),〕,wall:〔os。path。join(rootdir,resourcesimageswallhorizontal。png),os。path。join(rootdir,resourcesimageswallvertical。png),〕,block:〔os。path。join(rootdir,resourcesimagesblock。png),os。path。join(rootdir,resourcesimagesblockdestroyed。png),〕}字体路径FONTPATHSDICTNOINIT{ComicKings:os。path。join(rootdir,resourcesfontsComicKings。ttf),arfmoochikncheez:os。path。join(rootdir,resourcesfontsarfmoochikncheez。ttf),}愤怒的小鸟classAngryBirdsGame(PygameBaseGame):gametypeangrybirdsdefinit(self,kwargs):self。cfgConfigsuper(AngryBirdsGame,self)。init(configself。cfg,kwargs)运行游戏defrun(self):初始化screen,resourceloader,cfgself。screen,self。resourceloader,self。cfg播放背景音乐resourceloader。playbgm()开始游戏defstartgame():gamelevelsGameLevels(cfg,resourceloader,screen)gamelevels。start()开始界面componentspygame。sprite。Group()titlelabelLabel(screen,700,100,400,200)titlelabel。addtext(ANGRYBIRDS,80,cfg。FONTPATHSDICTNOINIT〔arfmoochikncheez〕,(236,240,241))components。add(titlelabel)startbtnButton(screen,500,400,300,100,startgame,(244,208,63),(247,220,111))startbtn。addtext(STARTGAME,60,cfg。FONTPATHSDICTNOINIT〔arfmoochikncheez〕,cfg。BACKGROUNDCOLOR)components。add(startbtn)quitbtnButton(screen,1000,400,300,100,QuitGame,(241,148,138),(245,183,177))quitbtn。addtext(QUIT,60,cfg。FONTPATHSDICTNOINIT〔arfmoochikncheez〕,cfg。BACKGROUNDCOLOR)components。add(quitbtn)charleslabelLabel(screen,cfg。SCREENSIZE〔0〕300,cfg。SCREENSIZE〔1〕80,300,100)charleslabel。addtext(CHARLES,60,cfg。FONTPATHSDICTNOINIT〔arfmoochikncheez〕,(41,41,41))components。add(charleslabel)clockpygame。time。Clock()whileTrue:foreventinpygame。event。get():ifevent。typepygame。QUIT:QuitGame()elifevent。typepygame。KEYDOWN:ifevent。keypygame。Kq:QuitGame()elifevent。typepygame。MOUSEBUTTONDOWN:ifstartbtn。selected():startbtn。action()elifquitbtn。selected():quitbtn。action()screen。fill(cfg。BACKGROUNDCOLOR)forcomponentincomponents:component。draw()pygame。display。update()clock。tick(cfg。FPS)友情提示 该库中的游戏基本上都有BGM,而且声音还不小。 如果摸鱼使用,请关闭声音外放!!!!