python制作小游戏 python制作小游戏总结
2024-11-23 01:16 - 立有生活网
用Python写一个简单的小游戏
相信大家都玩过方块吧,应该是小时候的回忆吧,但是想不想了解一下这个程序是怎么写出来的呢,自己写出来的应该玩起来更有感觉吧!
python制作小游戏 python制作小游戏总结
python制作小游戏 python制作小游戏总结
python制作小游戏 python制作小游戏总结
感觉还是蛮好玩吧!
接下来,我就分享一下这个游戏的源码过程啊!
先用python创建一个py文件
定义这次程序所需要的类
然后写出它所需要的模块
画背景图
画网格线
# 画已经落下的方块
# 画单个方块
# 画得分等信息
这样就可以写出来一个十分简单的方块啦,是不是觉得还不错呢!
python能写什么小游戏?
python可以做大多数网络游戏的,例如用一个py,做一些,将插入到py的python代码中,编写它的功能以及作用,多做一些,连在一起就是游戏了。
比如王者荣耀,首页就是动图的结合,点击效果可以通过代码实现,里面的对战可以通过代码控制效果,以达到打斗的场景。
只要学得精,有时间去做,去写,一般的那些高级游戏都是可以做出来的
如何用python程序编写一个循环五次的小游戏,每次随机产生两个数字让用户计算这两个数的?
如果这是VB的程序,那么可以用如下的得到两个1~10的整数:
x=Int(Rnd10)+1。
y=Int(Rnd10)+1。
再加上循环for i=1 to 5可以。
#include
#include
#include
int count=0, ok=0; / count表示回答次数, ok表示回答正确次数 /。
/ 加法函数 /。
int add(int x,int y)。
优点
简单:Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。
易学:Python极其容易上手,因为Python有极其简单的说明文档。
易读、易维护:风格清晰划一、强制缩进。
python编程应用:小游戏hangman
代码分析:
1.import random导入模块
导入random模块,本程序主要是使用random.randint(0,3)方法生成一个0-3之间的随机的随机数。
2、HANGMAN_PICS常量
Python默认把定义的常量大写,HANGMAN_PICS是一个字符列表常量,字母全部大些也提醒一次赋值之后不再改变,这就是常量的意思。
3、列表格式
animals=['frog','rabbit','owl','peacock'] 列表包含4个元素(),每一个元素用逗号隔开,左边方括号和右边的方括号是列表必须格式必须带的。
4、列表访问
用索引访问元素animals[0],0就是索引号,以此类推还想访问其他元素...animals[1],animals[2],animals[3],如果继续访问animals[4]就会造成索引越界报indexError的错误。
5、“ + ”连接符
“ + ”号 在程序中除了进行运算,还有就是连接字符串和列表,例1:animals='frog',+'rabbit'就会得到animals = 'frograbbit'. 例2:animals = ['frog','rabbit']和river_animals = ['duck','snake']两个列表通过 “+”连接符 就获得['frog', 'rabbit', 'duck', 'snake']一个合成新列表。
6、用索引赋值来修改列表元素
animals[1] = 'swan' 生成一个新列表 animals = [ 'frog' , 'swan' ]
7、in作符
in作符告诉我们in左边的值是否包含在右边列表中,如果该值在列表中它将要返回True;如果该值不在列表中,返回值是False。例1:'dragonfly' in [ 'frog' , 'rabbit' ] 返回值是 False 例2 :'duck' in [ 'duck' , 'snake' ] 返回值是True 。例3: ' bee ' in ' sanke bee bird bear lion owl .'
python制作小游戏 python制作小游戏总结
8、调用方法(mod)
8.1针对列表的方法 rrse( ) 和 append( )
rrse() 方把列表中的元素顺序反转,numbers = [ 1 , 2 , 3 , 4 , 5 ]然后 numbers.rrse( )会反转列表元素 numbers = [ 5 , 4 , 3 , 2 , 1 ]
append()方法在列表的添加一个元素,numbers.append( 6 ) 得到 numbers = [ 1 , 2 , 3 ,4 , 5, 6]
8.2 字符串方法 split( )
程序的51行使用此方法,让字符串 words 反馈一个words = [ 'ant', 'baboon', 'badger', 'bat', 'bear'........] 列表
python实现超级玛丽小游戏(动图演示+源码分享)
效果演示:
基础源码
1.基础设置(tools部分)
2.设置背景音乐以及场景中的文字(setup部分)
3.设置 游戏 规则(load_screen)
4.设置 游戏 内菜单等(main_menu)
5.main()
6.调用以上函数实现
python制作小游戏 python制作小游戏总结
1.基础设置(tools部分)
这个部分设置马里奥以及 游戏 中蘑菇等怪的的移动设置。
Python实现消消乐小游戏
pre{overflow-x: auto} 实现 消消乐的构成主要包括三部分:游戏主体、计分器、计时器,下面来看一下具体实现。
先来看一下游戏所需 Python 库。
importos importsys importtime importpy importrandom
定义一些常量,比如:窗口宽高、网格行列数等,代码如下:
WIDTH=400 HEIGHT=400 NUMGRID=8 GRIDSIZE=36 XMARGIN=(WIDTH-GRIDSIZENUMGRID)//2 YMARGIN=(HEIGHT-GRIDSIZENUMGRID)//2 ROOTDIR=os.getcwd() FPS=30
接着创建一个主窗口,代码如下:
py.init() screen=py.display.set_mode((WIDTH,HEIGHT)) py.display.set_caption('消消乐')
看一下效果:
再接着在窗口中画一个 8 x 8 的网格,代码如下:
screen.fill((255,255,220)) #游戏界面的网格绘制 defdrawGrids(self): forxinrange(NUMGRID): foryinrange(NUMGRID): rect=py.Rect((XMARGIN+xGRIDSIZE,YMARGIN+yGRIDSIZE,GRIDSIZE,GRIDSIZE)) self.drawBlock(rect,color=(255,165,0),size=1 #画矩形block框 defdrawBlock(self,block,color=(255,0,0),size=2): py.draw.rect(self.screen,color,block,size)
看一下效果:
再接着在网格中随机放入各种拼图块,代码如下:
whileTrue: self.all_gems=[] self.gems_group=py.sprite.Group() forxinrange(NUMGRID): self.all_gems.append([]) foryinrange(NUMGRID): gem=Puzzle(img_path=random.cho(self.gem_imgs),size=(GRIDSIZE,GRIDSIZE),ition=[XMARGIN+xGRIDSIZE,YMARGIN+yGRIDSIZE-NUMGRIDGRIDSIZE],downlen=NUMGRIDGRIDSIZE) self.all_gems[x].append(gem) self.gems_group.add(gem) ifself.isMatch()[0]==0: break
看一下效果:
再接着加入计分器和计时器,代码如下:
#显示得分 defdrawScore(self): score_render=self.font.render('分数:'+str(self.score),1,(85,65,0)) rect=score_render.get_rect() self.screen.blit(score_render,rect) #显示加分 defdrawAddScore(self,add_score): score_render=self.font.render('+'+str(add_score),1,(255,100,100)) rect=score_render.get_rect() self.screen.blit(score_render,rect) #显示剩余时间 defshowRemainingTime(self): remaining_time_render=self.font.render('倒计时:%ss'%str(self.remaining_time),1,(85,65,0)) rect=remaining_time_render.get_rect() self.screen.blit(remaining_time_render,rect)
看一下效果:
当设置的游戏时间用尽时,我们可以生成一些提示信息,代码如下:
whileTrue: forntinpy.nt.get(): ifnt.type==py.QUIT: py.quit() sys.exit() ifnt.type==py.KEYUPandnt.key==py.K_r: flag=True ifflag: break screen.fill((255,255,220)) text0='最终得分:%s'%score text1='按R键重新开始' y=140 foridx,textinenumerate([text0,text1]): text_render=font.render(text,1,(85,65,0)) rect=text_render.get_rect() ifidx==0: elifidx==1: y+=60 screen.blit(text_render,rect) py.display.update()
看一下效果:
说完了游戏图形化界面相关的部分,我们再看一下游戏的主要处理逻辑。
我们通过鼠标来纵拼图块,因此程序需要检查有无拼图块被选中,代码实现如下:
python制作小游戏 python制作小游戏总结
defcheckSelected(self,ition): forxinrange(NUMGRID): foryinrange(NUMGRID): ifself.getGemByPos(x,y).rect.collidepoint(ition): return[x,y] returnNone
我们需要将鼠标连续选择的拼图块进行位置交换,代码实现如下:
defswapGem(self,gem1_,gem2_): margin=gem1_[0]-gem2_[0]+gem1_[1]-gem2_[1] ifabs(margin)!=1: returnFalse gem1=self.getGemByPos(gem1_) gem2=self.getGemByPos(gem2_) ifgem1_[0]-gem2_[0]==1: gem1.direction='left' gem2.direction='right' elifgem1_[0]-gem2_[0]==-1: gem2.direction='left' gem1.direction='right' elifgem1_[1]-gem2_[1]==1: gem1.direction='up' gem2.direction='down' elifgem1_[1]-gem2_[1]==-1: gem2.direction='up' gem1.direction='down' gem1.target_x=gem2.rect.left gem1.fixed=False gem2.target_x=gem1.rect.left gem2.fixed=False self.all_gems[gem2_[0]][gem2_[1]]=gem1 self.all_gems[gem1_[0]][gem1_[1]]=gem2 returnTrue
每一次交换拼图块时,我们需要判断是否有连续一样的三个及以上拼图块,代码实现如下:
defisMatch(self): forxinrange(NUMGRID): foryinrange(NUMGRID): ifx+2-2: foreachin[res_match[1],res_match[1]+1,res_match[1]+2]: gem=self.getGemByPos([each,start]) ifstart==res_match[2]: self.gems_group.remove(gem) self.all_gems[each][start]=None elifstart>=0: gem.target_y+=GRIDSIZE gem.fixed=False gem.direction='down' self.all_gems[each][start+1]=gem else: gem=Puzzle(img_path=random.cho(self.gem_imgs),size=(GRIDSIZE,GRIDSIZE),ition=[XMARGIN+eachGRIDSIZE,YMARGIN-GRIDSIZE],downlen=GRIDSIZE) self.gems_group.add(gem) self.all_gems[each][start+1]=gem start-=1 elifres_match[0]==2: start=res_match[2] whilestart>-4: ifstart==res_match[2]: foreachinrange(0,3): gem=self.getGemByPos([res_match[1],start+each]) self.gems_group.remove(gem) self.all_gems[res_match[1]][start+each]=None elifstart>=0: gem=self.getGemByPos([res_match[1],start]) gem.target_y+=GRIDSIZE3 gem.fixed=False gem.direction='down' self.all_gems[res_match[1]][start+3]=gem else: gem=Puzzle(img_path=random.cho(self.gem_imgs),size=(GRIDSIZE,GRIDSIZE),ition=[XMARGIN+res_match[1]GRIDSIZE,YMARGIN+startGRIDSIZE],downlen=GRIDSIZE3) self.gems_group.add(gem) self.all_gems[res_match[1]][start+3]=gem start-=1
之后反复执行这个过程,直至耗尽游戏时间,游戏结束。
,我们动态看一下游戏效果。
总结
本文我们使用 Python 实现了一个简单的消消乐游戏,有兴趣的可以对游戏做进一步扩展,比如增加关卡等。
到此这篇关于Python实现消消乐小游戏的文章就介绍到这了,希望大家以后多多支持!
房屋租赁合同简易版 房屋租赁合同简易版的
2017房屋租赁合同范本标准版? 联本合同未尽事宜,一律按《中华经济合同法》的有关规定,经合同双方共同协商,作出补充规定,补充规定与本合同具有同等效力。系方式:: 1.甲方出租给乙方的···
杂牌手机回收(杂牌手机回收平台)
临沂手机批发市场在那 5、可以入手,因为是苹果为手机损坏顾客提供的新机,所以价格低官换机指的是在正常购买的iPhone激活后一年保修期内,手机出现非人为损坏等问题,苹果公司就会更换一部···
怎样投资理财 怎样投资理财比较好
怎样投资理财? 请点击输入描述 说到理财,大多数人反应会想到的是买理财产品。 怎样投资理财 怎样投资理财比较好 怎样投资理财 怎样投资理财比较好 其实理财不仅仅只是买理财产品,而是一···