怎么制作游戏啊(如何创造一款游戏)
俄罗斯方块小游戏是当年风靡一时的小游戏,该游戏由一个棋盘组成,该棋盘跨度为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
今日广东地区废钢价格(今日废钢材价格一吨多少钱)钢材企业提供最新的废钢筋价格汇总资讯,包含市场价格让您轻松了解市场行情,废钢筋价格今日价格最新报价行情走势来自于我的钢铁网门户网站,更多废钢行情。金投价格网提供今日国内废钢回收价格
什么是冷餐会(什么是冷餐会和鸡尾酒会)什么是冷餐会(什么是冷餐会和鸡尾酒会)冷餐会,它是目前国际上所通行的一种非正式的西式宴会,在商务活动中尤为常见。它的具体作法是,不预备正餐,而由就餐者随意在用餐时自行选择食物饮料,
日本餐桌礼仪(日本人的餐桌礼仪)日本餐桌礼仪(日本人的餐桌礼仪)日本是有着悠久历史的礼仪之邦,日本人非常注重餐桌礼仪,如果你到日本留学或旅游时,就要尊重当地的餐饮礼仪。日本人在餐桌礼仪上有诸多忌讳,如果不做足功课
ppt是什么软件(ppt制作教程)PPT的英文全称为PowerPoint,中文名称叫幻灯片或演示文稿。这是微软公司研发的一款演示文稿软件,里面呈现的内容是作者想表述的重点内容,比如关键字图表图片动画等重要内容,将P
中国四大民间传说(四大民间故事)中国四大民间传说(四大民间故事)中国四大民间故事,孟姜女,孟姜女哭长城,去寻找修长城的丈夫范喜良我老家称万喜良,自圆其说为万里长城能造成功,需要一个姓万的人。这当然是一种附会,但也
中国古代四大民间传说(中国四大民间传说之孟姜女哭长城)中国古代四大民间传说(中国四大民间传说之孟姜女哭长城)想必大家也听说过孟姜女哭长城,但你们知道故事是怎么样的吗?下面我们一起来了解这个爱情故事吧。秦朝时有一个美丽善良的姑娘叫孟姜女
听妈妈讲那过去的故事(妈妈什么地讲什么的故事)听妈妈讲那过去的故事(妈妈什么地讲什么的故事)牛儿还在山上吃草,放牛的却不知哪儿去了?我今天给大家讲王二小的故事今天,我给大家讲一讲鸡毛信的故事5月18日起,汉阳区思桥幼儿园开展童
一个故事(讲一个小故事)一个故事(讲一个小故事)那个时候,我和他正处在恋爱的季节。我们总是要聊很久才舍得挂。总是我在一句不舍的晚安中先挂断,我会在温馨的空气中感受那短暂的温馨,还有那种淡淡的悲伤后来,我们
还没想好名字的故事(故事大全睡前故事)还没想好名字的故事(故事大全睡前故事)在给孩子取名这件事情上不少宝爸宝妈可谓是用尽毕生绝学最近湖北十堰一名一年级小学生的名字火遍了整个网络他的名字响当当朱穆朗玛峰孩子爸妈为啥要给娃
安徒生童话有哪些故事(安徒生童话丑小鸭原文)每个人都是自己的老师!作者大大长期更新文章,愿阅读可以点亮每个人的生活。点击阅读全文,获取作者更多文章。提起安徒生童话,相信大朋友都会有自己的情怀。丑小鸭皇帝的新装卖火柴的小女孩海
小学生安全教育内容(校园安全小常识100条)校园安全知识是一个比较宽泛的概念,是学校安全教育的主要内容,也是保障校园安全的重要基础。校园安全知识,其实从学校层次上看有所不同,因为小学初中高中大学的学历教育层次不一样,他们所面