自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Qt编程之超级玛丽

一年前在一个公众号偶然看到了一些html游戏源码,其中就有超级玛丽的。用Webstrom打开看了下,发现是别人打过包,格式化后发现代码真的是晦涩难懂,后来又到github上去搜索,看能不能找到源代码,github果然什么都有。找到了下面两个仓库,貌似是最完整的,而且也可以调试源代码: https...

2020-03-14 13:43:15 222 0

原创 一个简单的BitTorrent客户端实现(六):peer manager和peer实现

peer是整个BT通信中最复杂的部分,主要是里面各种消息的发送和一些choke和unchoke策略,piece选择策略等等。peer manager用于管理peer,本程序中维护多个peer进行远程通信。

2016-04-27 14:53:36 2049 2

原创 一个简单的BitTorrent客户端实现(五):tracker manager和tracker实现

TrackerManager顾名思义就是管理tracker的。因为可能有多个tracker,所以采用了trackermanager进行管理,所以也显得比较有条理些。

2016-04-21 16:00:30 1636 0

原创 使用Qt开发文本编辑器(二):标签页式文档实现

Qt中相关的类标签页俗称Tab页,Qt提供了QTableWidget用于创建基于Tab页式的文档。使用QTableWidget,我们可以很方便得添加和删除Tab、设置和获取Tab页上面的文字,设置当前的Tab。

2016-03-11 16:55:38 1593 4

原创 一个简单的BitTorrent客户端实现(四):PeerAcceptor实现

PeerAcceptor使得本机作为BT的服务器端与网络上的peer进行通信。这样我们的BT既有服务器端,又有客户端。

2016-03-11 16:48:06 801 0

原创 一个简单的BitTorrent客户端实现(三):同步事件分离器

了解ACE的同学想必都知道它使用了Reactor的设计模式,ACE开发的应用程序中,有个地方会调用eventloop,里面会不停地去轮询。当询到事件时,就将事件分发给指定的事件处理器,事件处理器里面有一些什么handle_read,handle_write之类的函数来响应事件。本程序也借鉴了这种模...

2016-02-29 09:14:28 786 0

原创 使用Qt开发中国象棋(七):网络对战

关于Qt网络编程QTcpServer用于创建TCP服务器端。当newConnection信号激发时,我们调用指定的槽创建一个通信的套接字。 QTcpSocket用于创建TCP通信套接字。当connected信号激发时,我们向服务器端发送消息,当readyRead信号激发时,我们就可以读取数据了。

2016-02-29 09:08:36 2780 6

原创 一个简单的BitTorrent客户端实现(二):种子文件解析及信息保存

关于种子文件BT的种子文件一般是以.torrent作为后缀的。

2016-01-26 10:20:48 3811 0

原创 一个简单的BitTorrent客户端实现(一):概述

从读大学开始,C++就一直陪伴着我。这么多年了,总得留下些痕迹。而我一直钟爱socket编程,看了别人写的代码,再加上自己的摸索,就用C++做了最一个简单的bittorrent客户端。

2016-01-24 10:22:16 1268 0

原创 使用Qt开发文本编辑器(一):功能介绍

以前一直很羡慕别人能开发文本编辑器,后来学了Qt,看了里面的例子,自己改造一下,竟也可以弄一个出来,虽然说不是很强大,权当是自己的一个学习成果吧。好了,我就废话少说,直接转入正题了。这个文本编辑器主要实现了以下功能:         (1)文本编辑(包括撤销、恢复、保存、打开文件、导出成pdf、另...

2015-11-06 09:34:21 1571 0

原创 使用Qt开发中国象棋(六):将军和死棋检测

下棋的过程中,某一方主帅被对方攻击就是将军,如果不能解除危险,就是死棋。在这个游戏中实现了将军的判断和死棋的检测。具体如下:         (1)每走一步棋时,先要判断自己能不能这样走,当然除了走法是否合乎规则,比如说是否为蹩脚马等等,还要判断自己这样走是否被对方将军。         (2)走...

2015-11-05 14:40:55 1894 0

原创 使用Qt开发中国象棋(五):走棋

在整个游戏中,走棋是最复杂的部分,也是最麻烦的。开发这个程序,大概花了三分之一的时间在这个上面。在这个游戏中,走棋是通过鼠标点击事件来完成的,当然也可以通过拖动鼠标事件来弄。假设我们自己先走,整个走棋的逻辑如下:         (1)点击鼠标。         (2)ChessBoard类调用m...

2015-10-27 15:48:31 2527 1

原创 使用Qt开发中国象棋(四):步时控制

一般的象棋游戏中都会限时,超过时间没走棋,就算输了。这个游戏采用的是步时限制。走棋的时候会有提示,像下面那样: 界面用的是一个QLable来显示“红方走棋”,后面显示时间的用的是一个QLCDNumber的控件。显示时间可以用定时器的方式或者线程的方式,我这里用的是线程的方式。采用的是线程和条件...

2015-10-23 17:07:30 3014 1

原创 使用Qt开发中国象棋(三):走棋着法列表

在一个完整的中国象棋游戏中,一般界面上都显示了中文着法,为了简单起见,我开发的这个用了两个着法列表,红方一个,黑方一个,其实用一个就够了,只是感觉那样稍微会麻烦些。着法列表显示了每一步的走棋。下图是着法列表的截图:   着法列表用的是一个叫StepList的类来实现的,因为有两个着法列表,所以用...

2015-10-13 16:48:17 3201 1

原创 使用Qt开发中国象棋(二):棋盘绘制

棋盘用的是ChessBoard类,主要是显示界面上的棋子,响应鼠标点击事件,激发走棋的信号,MainWindow调用相关的槽,从而完成走棋。下面将一一介绍,错误之处,恳请各位指正,谢谢。         ChessBoard要显示一张背景图和18个棋子,还有走棋路迹。背景图是一个QPixmap对象...

2015-10-12 16:27:29 4599 3

原创 使用Qt开发中国象棋(一):概述

最近看了一些关于中国象棋的实现书籍,里面讲述了如何开发一个完整的中国象棋游戏,看了里面的内容,感觉里面的内容特别巧妙的,比如书中提到了用位棋盘来表示中国象棋的棋盘以及一些精妙的走棋算法。基于这些,自己也尝试的开发了一个中国象棋。     我是在Linux Mint 17.1 32伟操作系统下面开发...

2015-10-12 11:25:55 2982 5

原创 使用GDB调试多线程程序

最近一直在看Debugging with GDB,看了200多页,多少也有些收获,写了个多线程的程序调试了一下。很多时候,一个多线程程序运行了很长时间没有反应,可能是死锁或是在等待条件变量。以前用Visual Studio开发游戏时,也遇到过死锁的问题。Visual Studio调试时,我们可以点...

2015-04-28 15:27:18 588 0

原创 POSIX定时器

在Linux下,我们可以使用POSIX提供的函数来创建定时器 int timer_create(clockid_t clockid, struct sigevent *sevp, timer_t *timerid); clockid说明定时器是基于哪个时钟的,可以是下面的几个值: CLOCK_RE...

2015-01-11 10:25:52 599 0

原创 顺序打印多个线程ID

最近面试时,碰到一个面试题,题目是有3个线程,顺序打印这三个线程的线程ID多次,例如ABCABC...这样打印。 第一种方法:使用pthread_cond_timedwait或WaitForSingleObject,超时时间到了就打印出线程ID,每个线程设置不同的超时等待时间。 /* * mai...

2014-12-27 11:18:30 847 0

原创 一个线程池的例子(三)

在Linux下,我们使用pthread线程库来进行线程编程,下面是一个线程池的简单例子,还望各位多多指教。 main.cpp/* * main.cpp * * Created on: 2014年12月14日 * Author: jason */ #include #inc...

2014-12-27 08:14:04 652 0

原创 一个线程池的例子(二)

Qt提供了QThread用于创建线程,在实际的使用过程中,我们需要派生一个QThread的子类,实现其中的run虚函数, 用的时候创建该类的实例,调用它的start方法。下面是一个使用QThread实现了一个简单的线程池。 def.h #ifndef DEF_H #define DEF_H ...

2014-12-26 20:18:51 417 0

原创 一个线程池的例子(一)

线程池在我们日常工作中经常会用到,以前一直都不知道怎么用,今天看了书,写了一个简单的线程池例子。这个例子是基于Win32平台的。后面我会给出基于Linux平台和Qt的例子。 def.h #include #include #include #include using namespace...

2014-12-26 19:47:22 478 0

原创 Qt串口编程

Qt提供了QSerialPort类供我们读写串口,使用该类可以方便的对串口进行读写,下面是一个简单的例子: #ifndef SERIAL_PORT_H #define SERIAL_PORT_H #include #include class SerialPort : public QOb...

2014-12-14 20:55:29 752 0

原创 Linux串口编程

在Linux下,串口设备显示在/dev目录下,如果用的是USB转的串口,我们执行下面的命令:         ls /dev/ | grep tty         就可以看到下面的信息:         ttyUSB0         ttyUSB1         在Linux操作系统下,一...

2014-12-14 20:42:52 934 0

原创 基于文件列表批量拷贝文件

最近因为工作的需要,

2014-04-13 11:31:33 840 0

原创 FIFO

FIFO

2013-11-03 08:04:29 707 0

原创 在日常工作中使用正则表达式

在我们写代码的时候,基本上都用不到正则表达式,除了要在我们的代码中校验邮箱和手机号码的合法性的功能外。其实我们几乎每天都会使用正则表达式,因为使用正则表达式不一定要用在代码中,日常的查找替换都可以使用到。         支持正则表达式的文本编辑器有很多,如notepad++,UE,Komodo ...

2013-10-27 09:17:06 664 0

原创 管道

管道由pipe函数创建,是进程间通信的一种方式。  #include int pipe(int fd[2]);                                                              返回:成功时为0,出错时为-1 该函数返回两个文件描述符:fd...

2013-10-27 01:06:25 714 0

原创 学生信息管理系统C实现

<br />      最近看了一些数据结构的书,感觉看书的时候看一段时间就感到厌倦了,个人觉得光看书枯燥无味而且也没多大收获,倒不如丢开书本自己写代码,遇到不会的再看书或请教别人,于是决定写一些代码,也算是我学了数据结构的劳动成果吧。代码不多,1000行左右。其中有些代码是照搬别人的...

2010-09-09 21:23:00 2228 3

转载 50个C/C++源代码网站

50个c/c++源代码网站 文章出处:http://blog.chinaunix.net/u3/106835/showart_2190632.htmlC/C++是最主要的编程语言。这里列出了50名优秀网站和网页清单,这些网站提供c/c++源代码。这份清单提供了源代码的链接以及它们的小说明。我已尽力包

2010-05-12 16:43:00 790 0

转载 链表排序

文章出处:http://hi.baidu.com/zouguole/blog/item/7b1415fbed29d3244e4aea52.html链表排序2008-09-29 19:56==========================功能:选择排序(由小到大)返回:指向链表表头的指针=====...

2010-04-17 10:09:00 700 1

转载 链表的各种操作实现 链表逆序 链表排序 有序链表归并 链表存在环的判定

链表基本操作实现 c语言版本,该程序在visual c++ 6.0上调试通过!   本人写该程序完全是为学习交流之用,还望大家多多指教。可以随便引用,或修改本程序,但需注明请注明出处!多谢!   引用地址:http://blog.sina.com.cn/maxiaof/*  Author:  Ja...

2010-04-15 15:02:00 929 0

提示
确定要删除当前文章?
取消 删除