怎么制作游戏啊(如何创造一款游戏)
俄罗斯方块小游戏是当年风靡一时的小游戏,该游戏由一个棋盘组成,该棋盘跨度为10个单元格,高度为20个单元格,如下所示。
俄罗斯方块小游戏
关于此小游戏的规则,我们不再介绍,本期文章主要用代码来实现,我们知道俄罗斯方块小游戏主要有如下7个方块组成,我们在代码中使用字母" O"," I"," S"," Z"," L"," J"和" T"表示它们。
俄罗斯方块使用OpenCV和python创建俄罗斯方块import cv2 import numpy as np from random import choice SPEED = 1 #控制速度 board = np.uint8(np.zeros([20, 10, 3])) quit = False place = False drop = False switch = False held_piece = "" flag = 0 score = 0
首先我们导入需要的第三方库以及定义好需要的变量# 所有方块造型 next_piece = choice(["O", "I", "S", "Z", "L", "J", "T"]) def get_info(piece): if piece == "I": coords = np.array([[0, 3], [0, 4], [0, 5], [0, 6]]) color = [255, 155, 15] elif piece == "T": coords = np.array([[1, 3], [1, 4], [1, 5], [0, 4]]) color = [138, 41, 175] elif piece == "L": coords = np.array([[1, 3], [1, 4], [1, 5], [0, 5]]) color = [2, 91, 227] elif piece == "J": coords = np.array([[1, 3], [1, 4], [1, 5], [0, 3]]) color = [198, 65, 33] elif piece == "S": coords = np.array([[1, 5], [1, 4], [0, 3], [0, 4]]) color = [55, 15, 215] elif piece == "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] return coords, color
然后我们建立7个俄罗斯方块的造型与颜色,以上建立完成后,我们需要搭建一个游戏界面以及鼠标控制事件def display(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]] = color right = 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 - move left", (45, 200), cv2.FONT_HERSHEY_DUPLEX, 0.6, [0, 0, 255]) dummy = cv2.putText(dummy, "D - move right", (45, 225), cv2.FONT_HERSHEY_DUPLEX, 0.6, [0, 0, 255]) dummy = cv2.putText(dummy, "S - move down", (45, 250), cv2.FONT_HERSHEY_DUPLEX, 0.6, [0, 0, 255]) dummy = cv2.putText(dummy, "W - hard drop", (45, 275), cv2.FONT_HERSHEY_DUPLEX, 0.6, [0, 0, 255]) dummy = cv2.putText(dummy, "J - rotate left", (45, 300), cv2.FONT_HERSHEY_DUPLEX, 0.6, [0, 0, 255]) dummy = cv2.putText(dummy, "L - rotate right", (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)) return key
游戏界面
搭建的游戏界面如上,我们在界面左边显示每个鼠标按键的功能,中间是主游戏区域,最右边为积分区域
以上建立完成后,我们开始主函数的部分
我们有一个while循环,在每次迭代中,我们都会在游戏中放置一个新棋子。
在俄罗斯方块中,我们可以按某个键来固定一块。通过与当前方块交换,可以保留将来使用的一种方块。
在下面的代码中,我们首先检查用户是否要使用switch变量将当前方块与保留的方块交换。如果switch变量设置为false,我们将分配current_piece,next_piece并随机选择一个new next_pieceif __name__ == "__main__": while not quit: if switch: held_piece, current_piece = current_piece, held_piece switch = False else: current_piece = next_piece next_piece = choice(["I", "T", "L", "J", "Z", "S", "O"])· if flag
海尔智能家居发布2020年半年度报告当前局势冲击后的收海尔智能家居有限公司海尔集团的上市子公司之一(D股ISINCNE1000031C1,A股ISINCNE000000CG9,ldquo海尔智能家居rdquo或ldquo公司rdquo
斯巴鲁怎么样(开斯巴鲁的都是什么男人)颜值高30万以内进口品质四驱SUV操控动力强,相信这是很多消费者在选购SUV时开出的条件,这也足以证明消费者现今购车已不是盲目跟从品牌而冲动消费,理性的选择自己框定条件内表现最好的
2018年古德伍德老式赛车会欢庆古董赛车二十週年古德伍德老式赛车会(GoodwoodRevival)将于九月举办庆祝活动,欢庆历史悠久的古德伍德赛道满二十週年与竞速赛车的回归,届时十五万人将齐聚一堂,见证赛车与传奇车手再现传统。
韩国医界与政府达成了什么协议近日韩国医界与政府达成了什么协议登录了热搜,也是在网上引起了网友们的关注,那么很多小伙伴可能还不清楚具体的情况如何,小编也是在网上查阅了一些信息,那么接下来就分享给大家来了解下韩国
甲骨文确认与字节跳动达成协议近日有关于甲骨文确认与字节跳动达成协议的问题受到了很多网友们的关注,大多数网友都想要知道甲骨文确认与字节跳动达成协议的具体情况,那么关于到甲骨文确认与字节跳动达成协议的相关信息,小
TrustGReddy荣获最佳概念车优秀奖日本改装大厂之一的TrustGReddy算是东京改装车展的常客,与许多改装厂相同,近几年也将重心放在NissanGTR与Toyota86SubaruBRZ上,也与RocketBun
全民女朋友阿喜亮丽现身SUZUKI车展现场现场人气满点!热力四射!才刚于上周五热闹开幕的2014台北新车大展,首个周末六日果然挤满满满人潮,其中,又以日本原装进口品牌SUZUKI最具看头,为符合SUZUKI年轻活力的品牌形
巴黎车展SuzukiSCross概念车SUZUKI在2012年9月27日的巴黎车展中发表第一代Csegment跨界概念车Scross。概念车SCross企图以情感表现方式从前保桿至后车身均呈现动感线条,前保桿的LED雾
历史博物馆(北京最值得去的博物馆排名)历史博物馆(北京最值得去的博物馆排名)在介绍之前,先总结一下参观博物馆的十点经验1所有博物馆,均周一闭馆(含国家法定节假日)切记!周一不要去博物馆,因为进不去。2基本上开放的时间都
汽车车标大全(30种常见的汽车标志)汽车车标大全(30种常见的汽车标志)奥迪AUDI奥迪轿车的标志为四个圆环,代表着合并前的四家公司。这些公司曾经是自行车摩托车及小客车的生产厂家。由于该公司原是由4家公司合并而成,因
车标是马的是什么车(汽车品牌标志马是啥车)车标是一家车企品牌文化的象征,一块经典的车标能给消费者带来很深的记忆,也可以传递品牌文化。很多车企设计新车标的时候挖空心思,给车标赋予一些美好的内涵,很多车企都会在车标中融入马这个