当前位置:首页 > TAG信息列表 > dns介绍

dns介绍

dns是什么意思

俄罗斯方块小游戏是当年风靡一时的小游戏,该游戏由一个棋盘组成,该棋盘跨度为10个单元格,高度为20个单元格,如下所示。

俄罗斯方块小游戏

关于此小游戏的规则,我们不再介绍,本期文章主要用代码来实现,我们知道俄罗斯方块小游戏主要有如下7个方块组成,我们在代码中使用字母“o”,“i”,“s”,“z”,“l”,“j”和“t”表示它们。

如何创造一款游戏(怎么制作游戏啊)

俄罗斯方块

使用opencv和python创建俄罗斯方块importcv2importnumpyasnpfromrandomimportchoicespeed=1#控制速度board=np.uint8(np.zeros([20,10,3]))quit=falseplace=falsedrop=falseswitch=falseheld_piece=""flag=0score=0

首先我们导入需要的第三方库以及定义好需要的变量

#所有方块造型next_piece=choice(["o","i","s","z","l","j","t"])defget_info(piece):ifpiece=="i":coords=np.array([[0,3],[0,4],[0,5],[0,6]])color=[255,155,15]elifpiece=="t":coords=np.array([[1,3],[1,4],[1,5],[0,4]])color=[138,41,175]elifpiece=="l":coords=np.array([[1,3],[1,4],[1,5],[0,5]])color=[2,91,227]elifpiece=="j":coords=np.array([[1,3],[1,4],[1,5],[0,3]])color=[198,65,33]elifpiece=="s":coords=np.array([[1,5],[1,4],[0,3],[0,4]])color=[55,15,215]elifpiece=="z":coords=np.array([[1,3],[1,4],[0,4],[0,5]])color=[1,177,89]else:coords=np.array([[0,4],[0,5],[1,4],[1,5]])color=[2,159,227]returncoords,color

然后我们建立7个俄罗斯方块的造型与颜色,以上建立完成后,我们需要搭建一个游戏界面以及鼠标控制事件

defdisplay(board,coords,color,next_info,held_info,score,speed):border=np.uint8(127-np.zeros([20,1,3]))border_=np.uint8(127-np.zeros([1,34,3]))dummy=board.copy()dummy[coords[:,0],coords[:,1]]=colorright=np.uint8(np.zeros([20,10,3]))right[next_info[0][:,0]2,next_info[0][:,1]]=next_info[1]left=np.uint8(np.zeros([20,10,3]))left[held_info[0][:,0]2,held_info[0][:,1]]=held_info[1]dummy=np.concatenate((border,left,border,dummy,border,right,border),1)dummy=np.concatenate((border_,dummy,border_),0)dummy=dummy.repeat(20,0).repeat(20,1)dummy=cv2.puttext(dummy,str(score),(520,200),cv2.font_hershey_duplex,1,[0,0,255],2)#控制键dummy=cv2.puttext(dummy,"a-moveleft",(45,200),cv2.font_hershey_duplex,0.6,[0,0,255])dummy=cv2.puttext(dummy,"d-moveright",(45,225),cv2.font_hershey_duplex,0.6,[0,0,255])dummy=cv2.puttext(dummy,"s-movedown",(45,250),cv2.font_hershey_duplex,0.6,[0,0,255])dummy=cv2.puttext(dummy,"w-harddrop",(45,275),cv2.font_hershey_duplex,0.6,[0,0,255])dummy=cv2.puttext(dummy,"j-rotateleft",(45,300),cv2.font_hershey_duplex,0.6,[0,0,255])dummy=cv2.puttext(dummy,"l-rotateright",(45,325),cv2.font_hershey_duplex,0.6,[0,0,255])dummy=cv2.puttext(dummy,"i-hold",(45,350),cv2.font_hershey_duplex,0.6,[0,0,255])cv2.imshow("tetris",dummy)key=cv2.waitkey(int(1000/speed))returnkey

游戏界面

搭建的游戏界面如上,我们在界面左边显示每个鼠标按键的功能,中间是主游戏区域,最右边为积分区域

以上建立完成后,我们开始主函数的部分

我们有一个while循环,在每次迭代中,我们都会在游戏中放置一个新棋子。

在俄罗斯方块中,我们可以按某个键来固定一块。通过与当前方块交换,可以保留将来使用的一种方块。

在下面的代码中,我们首先检查用户是否要使用switch变量将当前方块与保留的方块交换。如果switch变量设置为false,我们将分配current_piece,next_piece并随机选择一个newnext_piece

if__name__=="__main__":whilenotquit:ifswitch:held_piece,current_piece=current_piece,held_pieceswitch=falseelse:current_piece=next_piecenext_piece=choice(["i","t","l","j","z","s","o"])·ifflag


贵州特产之家 皖东会计网

  • 关注微信关注微信

猜你喜欢

微信公众号