![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
游戏开发
littleZhuHui
程序员
展开
-
网络斗地主游戏的完整设计与实现(一)项目的基本结构
引言开发一个完整的游戏程序需要做的工作不少,本系列介绍一个较为完整的网络斗地主游戏的设计与实现过程。游戏基本界面项目基本结构项目分成两个主要部分,前台浏览器应用与后台数据库整个项目由javascript +php+ sqlserver构成;但其中php代码只起一个简单的转发作用,前台界面由javascript代码完成,服务器端逻辑由存储于sqlserver中的T-Sql代码实现。项目的...原创 2019-07-24 19:58:18 · 5080 阅读 · 0 评论 -
opencv-python实际演练(二)军棋自动裁判(6)棋子文字的识别率不能达到百分百
引子文章《opencv-python实际演练(二)军棋自动裁判(1)棋子图像采集设备DIY》介绍了棋子图像采集仪的制作过程。文章《opencv-python实际演练(二)军棋自动裁判(5)棋子文字的自动识别》对棋子上的文字识别做了说明。实验今天通过实验,发现棋子文字的识别率不能达到百分百。这对军棋自动裁判的实现来说带来了新的挑战。比如以上实验中 ,“工兵“,”团长“可以正常识别出来,...原创 2019-09-11 21:25:27 · 439 阅读 · 0 评论 -
python小欢喜(七)游戏编程 (3) 高山滑雪
引子在前面的文章《python小欢喜(七)游戏编程 (1) 挡球》实现了一个小游戏。不过这个游戏过于简单,没有什么趣味性。接下来介绍一款更加好玩的游戏的开发。该游戏名为高山滑雪,改编自《Computer Programming for Kids and other Beginners》的第25章。游戏效果游戏的基本界面如下:滑雪者由高山上滑下,玩家通过键盘上的左右方向键控制滑雪者向左...原创 2019-09-11 21:51:12 · 633 阅读 · 0 评论 -
python小欢喜(八)俄罗斯方块 (1) 基本界面的准备
前面的几篇文章中介绍了一些小游戏的开发,接下来准备用pygame开发一个经典的小游戏:俄罗斯方块。开发本游戏的目标是用尽可能少的代码实现俄罗斯方块游戏的核心功能。首先确认基本界面的实现。第一步,实现一个小方块的自由下落实现一个小方块自由下落的效果如下:对应的python代码如下:main.py# -*- coding:utf-8 -*- # 俄罗斯方块import pygam...原创 2019-09-15 15:31:02 · 524 阅读 · 0 评论 -
python小欢喜(八)俄罗斯方块 (2)由方块组成复杂的形状
在前一篇文章《python小欢喜(八)俄罗斯方块 (1) 基本界面的准备》介始了如何让小方块自由下落,并且可以用方向键控制左右移动,接下来介绍如何组成各种形状的方块。4个方块组成一个模条的效果如下...原创 2019-09-15 19:52:07 · 699 阅读 · 0 评论 -
python小欢喜(八)俄罗斯方块 (3) 组合对象的旋转
在前一篇文章《python小欢喜(八)俄罗斯方块 (2)由方块组成复杂的形状》介始了如何由多个小方块组合成横条状与竖条状,并且可以用方向键控制左右移动,接下来介绍如何实现组合对像的旋转4个方块组成一个横条的旋转效果如下:python 代码如下:# 俄罗斯方块,组合对象的旋转import pygame, sys#颜色常量的定义BLACK = (0,0,0) # 用RGB...原创 2019-09-15 21:23:16 · 588 阅读 · 0 评论 -
python小欢喜(八)俄罗斯方块 (4) 下落方块组合与底部方块组合的碰撞检测
在前一篇文章《python小欢喜(八)俄罗斯方块 (3) 组合对象的旋转》实现了多个方块组合而成的对像的旋转功能,接下来解决方块下落到底部后如何停下来的问题。方块下落到底部停下来可以分为两种情形1 碰到下边界2 碰到停在底部的其它方块这两种情形其实可以合并成一种情形来考虑,即预先设置一行方块位于窗口下边界之下,这一行方块不会被显示出来,但下落的方块只要碰到底部方块组合后就会停下来。这样一来...原创 2019-09-16 17:40:19 · 915 阅读 · 0 评论 -
python小欢喜(八)俄罗斯方块 (5) 生成各种组合形状
前面的文章《python小欢喜(八)俄罗斯方块 (2)由方块组成复杂的形状》只是实现了“横条”与“竖条”两种组合形状。接下来介绍生成更多复杂的组合形状。下面是L形状的效果图下面是“品”字形状的效果图:由于由多个方块组合生成的形状很多,因此使用一种较为直观的方式 来生成组合形状的坐标值即用二维矩阵图示方式来表示形状,1表示该处有方块,0表示没有#方块组合形状的二维矩阵图示,1表示该处有...原创 2019-09-16 20:04:47 · 1166 阅读 · 0 评论 -
python小欢喜(八)俄罗斯方块 (6) 源码文件的初步组织
在前面的文章《[python小欢喜(八)俄罗斯方块 (5) 生成各种组合形状](https://blog.csdn.net/littlezhuhui/article/details/100899174》实现了比较复杂的组合形状。到这个时候为止,所有的源程序都写在一个文件中。随着代码的功能越来越复杂,有必要将单一的源文件拆分成多个源文件,每个源文件中的代码组成一个功能尽可能内聚的模块。源文件的拆分...原创 2019-09-16 20:43:25 · 381 阅读 · 0 评论 -
python小欢喜(八)俄罗斯方块 (7) 连续生成下落的方块
前面的文章《python小欢喜(八)俄罗斯方块 (6) 源码文件的初步组织》实现了一个方块组合下落的效果,接下来实现一个方块组合停在了底部之后,一个新的方块组合紧接着从顶部落下的效果。固定形状的方块组合组合连续下落的效果如下:为了实现上述效果,当下落的方块组合碰到底部后,要停下来,并且新的方块组合从顶部落下,为此在底部方块组合类BottomGroup中添加了一个方法 eat,#吃掉下落的方...原创 2019-09-16 21:52:08 · 747 阅读 · 0 评论 -
python小欢喜(八)俄罗斯方块 (8) 用PIL生成方块图像,不再从图片文件加载
前面的文章《python小欢喜(八)俄罗斯方块 (6) 源码文件的初步组织》将源代码分成了3个独立的文件config.py,block.py,main.py为了显示一个小方块,在block.py的 Block类的初始化方法中有如下语句self.image = pygame.image.load("block.png") 这要求在源码所在的文件目录中存放有 block.png这个图片文件...原创 2019-09-17 11:04:40 · 605 阅读 · 0 评论 -
python小欢喜(八)俄罗斯方块 (9) 按向下的方向键时加速下落
前面的文章《python小欢喜(八)俄罗斯方块 (6) 源码文件的初步组织》将源代码分成了3个独立的文件config.py,block.py,main.py在前面的例子中,方块以恒定的速度下落。接下来实现一个功能,在按下向下的方向键后,方块以更快的速度下落。为了实现这一点,修改block.py中 FallingGroup 类,为其添加属性#下落速度 self.downSpee...原创 2019-09-17 13:06:34 · 1228 阅读 · 0 评论 -
python小欢喜(八)俄罗斯方块 (10) 清除底部已经填满的行
前面的文章《python小欢喜(八)俄罗斯方块 (6) 源码文件的初步组织》将源代码分成了3个独立的文件config.py,block.py,main.py在前面的例子中,已经实现了方块自由下落的功能。接下来实现一个功能:当底部的方块填满一行时,应该被清除,游戏积分也要相应增加。目前暂不考虑游戏积分的问题。先来实现如何清除底部已经填满的行。清除行的实际效果如下为了实现清除行的功能,修改 ...原创 2019-09-17 16:13:33 · 1255 阅读 · 0 评论 -
python小欢喜(八)俄罗斯方块 (11) 判断游戏是否结束
前面的文章《python小欢喜(八)俄罗斯方块 (6) 源码文件的初步组织》将源代码分成了3个独立的文件config.py,block.py,main.py在前面的例子中实现了一个功能:清除底部已经填满的行。在实现这个功能时用到了一个辅助方法,就是统计停在底部的方块所组成的行集的信息。 其实通过这个行集的信息,可以很方便地判断游戏是否已经结束。请看 BottomGroup类中eat 方法中的...原创 2019-09-17 19:57:06 · 959 阅读 · 0 评论 -
python小欢喜(八)俄罗斯方块 (12) 添加游戏音效
为游戏添加音效,可以增加更多的趣味性原创 2019-09-21 14:53:31 · 2297 阅读 · 1 评论 -
opencv-python实际演练(二)军棋自动裁判(1)棋子图像采集设备DIY
引子在现场下军棋时需要三个人,其中一个人当裁判。如果只有两个人,又想玩军棋,就需要有一个自动裁判机制。想通过图像识别技术自动识别棋子上的文字,从而实现棋子的自动裁判功能。在前一篇文章《opencv-python实际演练(一)图像识别(1)目标区域提取》对模拟的双方棋子图像进行了目标区域的提取。但是真实的图像与模拟的图像终归有一些差距。接下来要对真实的场景做处理。棋子图像采集设备的成品图以...原创 2019-09-06 22:32:46 · 1277 阅读 · 0 评论 -
opencv-python实际演练(二)军棋自动裁判(5)棋子文字的自动识别
引子文章《opencv-python实际演练(二)军棋自动裁判(1)棋子图像采集设备DIY》介绍了棋子图像采集仪的制作过程。文章《opencv-python实际演练(二)军棋自动裁判(3)棋子图像采集设备的改进》对图像采集仪进行了改进。现在该项目的硬件部分已经准备完毕,接下来要做的就是对采集到的棋子图像进行OCR。如果能够顺利地识别出棋子上的文字,判断两个棋子的棋力大小就比较容易了。棋子文...原创 2019-09-09 17:46:06 · 1076 阅读 · 0 评论 -
网络斗地主游戏的完整设计与实现(三)入口存储过程详解,理解动态调用存储过程的原理
引言在前一篇文章中说到了一个枋心技术路线,就是在js代码中通过ajax请求调用sqlserver中的存储过程。下面对这一个调用过程在数据库端的工作过程做一个较为详细的说明。因为这里用到了在存储过程中动态调用其它存储过程的技术,所以值得细讲一下。项目的源码可在CSDN资源中下载入口存储过程现在很多网络应用都在使用单入口技术。在本项目中通过一个入口存储过程,实现了单入口功能。下面看一下这个入...原创 2019-07-29 22:03:40 · 405 阅读 · 0 评论 -
网络斗地主游戏的完整设计与实现(二)系统的核心技术路线
引言在前面的文章《网络斗地主游戏的完整设计与实现(一)项目的基本结构》介绍了项目的整体结构。接下来说明一下系统中用到的核心技术路线游戏界面的呈现斗地主游戏的玩家分成三个,而且在未叫牌与叫牌后玩家的角色会发生变化,因此要用不同的图片加以呈现。本项目没有使用cocos2d之类的游戏框架,而是使用基本的javascrpt+jquery实现游戏界面。具体对这个项目来说,主要的游戏界面分为几大类:...原创 2019-07-25 18:07:08 · 1612 阅读 · 0 评论 -
网络斗地主游戏的完整设计与实现(四)游戏状态更新机制与心跳机制
引言在前一篇文章中讲解了通过入口存储过程动态调用业务过程的原理。下面来说明如何实现游戏状态的更新。项目的源码可在CSDN资源中下载实现原理由于http协议是无状态的请求响应式协议,用户可以主动向服务器发起请求,得到回复。但如果服务器状态发生了变化,却不能直接地推送消息给用户。在web应用中,消息推送是一个长期讨论的话题。现在已经有了比较成熟的解决方案,比如websocket。不过本项目...原创 2019-08-03 20:19:48 · 619 阅读 · 0 评论 -
网络斗地主游戏的完整设计与实现(五)随机发牌功能的实现
在扑克牌游戏中,生成一幅随机打乱的牌型,然后分发给玩家,是必须要实现的基本功能。基本原理肯定是使用随机数,但是只有随机数达不到效果,因为是要随机地打乱顺序,而不是仅仅生成54个随机数。因为随机数有可能是重复的。下面是用sql-server 的存储过程实现的随机发牌功能:CREATE procedure dealCards(@deskID int,...原创 2019-08-07 22:04:35 · 969 阅读 · 0 评论 -
关于军棋自动裁判机制的设想
一般来说,下军棋需要三个,其中一个人当裁判想到了几种自动裁判的方案1 图像识别,用手机自动识别棋子上的文字,缺点是拍照,识别耗时较长2 二维码扫描,用手机扫棋子上的二维码,缺点是要加贴二维码,分辨力强的人可以也可以识别二维码,可以考虑将二维贴在棋子下方3 RFID识别,成本比较高...原创 2019-08-13 20:38:15 · 1154 阅读 · 0 评论 -
midi键盘接电脑实现电子琴功能
将一台midi键盘接到电脑上,变成一台电子琴,似乎是一个很简单的事情。找一个音乐编辑类软件,可以接受midi键盘的输入就可以了。比如 freeepiano 就可以接midi键盘。但是这样实现的其实是电钢琴,而不是电子琴。为什么?电子琴的重要功能是可能实现自动和弦伴奏,而电钢琴是没有这个功能的。要实现类似于电子琴的功能,这里有两个实现方案。方案一:one man band 11 + loo...原创 2019-08-22 21:26:13 · 6459 阅读 · 0 评论 -
python小欢喜(六)动画 (1) pygame的安装与初步使用
前面几篇相关的文章一直使用在线编写python的网页。不过在线编写python的网页只实现了一小部分python功能。如果要想编写功能更强的python程序,还是需要在本地计算机上安装python。本次实验环境是Windows 10 。其实不管是windows,还是其它的主流操作系统,安装python都不是一件太难的事情。准备实验环境进入python的官网点击:Downloads:p...原创 2019-08-31 20:36:42 · 462 阅读 · 0 评论 -
python小欢喜(六)动画 (2) 移动的笑脸
在前一篇文章《python小欢喜(六)动画 (1) pygame的安装与初步使用》中介绍了如何安装pygame。接下来咱们用pygame做一些有趣的动画效果显示笑脸图片python代码如下:# -*- coding:utf-8 -*- # showPic.py# 显示笑脸图处import pygame # 导入pygame模块pygame.init()screen ...原创 2019-09-01 21:48:46 · 2037 阅读 · 1 评论 -
python小欢喜(六)动画 (3) 画笔程序
在前面的文章《python小欢喜(六)动画 (1) pygame的安装与初步使用》中介绍了如何安装pygame。接下来用pygame实现一个简单的画笔程序。与前面的简单动画相比,最大的不同之处在于,画笔程序需要处理用户的输入,用户可以用鼠标在屏幕上画出自己想画的任务图形。实现效果在pygame的窗口中,点击鼠标左键不放,通过拖动就可以绘制任意图形。python代码如下:# -*- co...原创 2019-09-02 19:32:32 · 758 阅读 · 0 评论 -
python小欢喜(七)游戏编程 (1) 挡球
在前面的文章《python小欢喜(六)动画 (1) pygame的安装与初步使用》中介绍了如何安装pygame。接下来用pygame开发一个小游戏。游戏界面如下:在游戏窗口中有一个运动的足球,碰到边界或挡板会反弹,玩家通过鼠标的移动,可以拖动挡板左右移动。足球如果碰到窗口下边界,则玩家的生命值减1,如果足球被挡板弹回,则得分数加1。python代码如下:ballGame.py该代码改...原创 2019-09-03 22:08:16 · 863 阅读 · 0 评论 -
python小欢喜(七)游戏编程 (2) 挡球游戏的改进:使用中文提示并添加声音效果
在前面的文章《python小欢喜(六)动画 (1) pygame的安装与初步使用》中介绍了如何安装pygame。《python小欢喜(七)游戏编程 (1) 挡球》实现了一个小游戏。接下来对这个小游戏做两方面的改进1 使用中文提示2 添加上碰撞时的声音效果游戏界面如下:可以看到,窗口上方的提示变成了中文,如果戴上耳机或使用音箱,可以听到足球碰到挡板或下边界时发出的声音。python代码...原创 2019-09-04 21:18:03 · 431 阅读 · 0 评论 -
opencv-python实际演练(二)军棋自动裁判(2)棋子图像采集效果分析
引子在前一篇文章《opencv-python实际演练(二)军棋自动裁判(1)棋子图像采集设备DIY》介绍了棋子图像采集设备的制作过程,在取得棋子图像后发现提取目标区域的效果还不够好,有时不能正确地找出目标区域。本文试图找出影响目标区域提取的关键因素,为棋子图像采集设备的改进做出理论上的指导。提取过程的实例分析Canny 边缘检查结果如下:直观上看,这个外边缘很完整,接下来查找外轮廓co...原创 2019-09-08 18:00:18 · 400 阅读 · 0 评论 -
opencv-python实际演练(二)军棋自动裁判(3)棋子图像采集设备的改进
引子在文章《opencv-python实际演练(二)军棋自动裁判(1)棋子图像采集设备DIY》介绍了棋子图像采集设备的制作过程,在取得棋子图像后发现提取目标区域的效果还不够好,有时不能正确地找出目标区域。本文试图找出影响目标区域提取的关键因素,为棋子图像采集设备的改进做出理论上的指导。在文章《opencv-python实际演练(二)军棋自动裁判(2)棋子图像采集效果分析》找出了影响目标区域提取...原创 2019-09-08 18:50:28 · 546 阅读 · 0 评论 -
opencv-python实际演练(二)军棋自动裁判(4)棋子图像提取算法的改进
引子在文章《opencv-python实际演练(二)军棋自动裁判(1)棋子图像采集设备DIY》介绍了棋子图像采集设备的制作过程。在文章《opencv-python实际演练(二)军棋自动裁判(3)棋子图像采集设备的改进》对图像采集设备进行了改进。在实验中发现了一种情形,就是有些棋子上的文字比较靠近边缘,按照以前的算法不能有效地提取目标区域问题描述当棋子上的文字比较靠近边缘,采集到的原始图像...原创 2019-09-08 22:02:41 · 658 阅读 · 0 评论 -
python开发的军棋自动裁判软件
经过一段时间的完善,军棋自动裁判软件的开发已经基本完成。整个系统由两硬件与软件两部分构成。棋子图像采集设备将军棋棋子图片通过USB上传到PC机python开发的自动裁判软件对图像做预处理,提取目标区域的图像,然后调用百度OCR接口识别棋子图像上的文字。收到返回的识别结果后判定两方棋子的大小。python代码如下:config.py#coding:utf-8#军棋自动裁判配置文...原创 2019-09-27 21:22:15 · 2179 阅读 · 0 评论