上一页 1 2 3 4 5 6 7 8 9 ··· 23 下一页
摘要: 套接字函数介绍 套接字函数通常封装在Ws2_32.dll动态连接库中,头文件是winsock2.h,因此用户需要引用头文件和链接库 #include “winsock.h” //引用头文件 #pragma comment(lib,”ws2_32.lib”) //链接库文件此外,使用套接库函数前需要初始化套接字,使用函数WSAStartup()实现例如: WSADATA wsd; //定义WSADATA对象 WSAStartup(MAKEWORD(2,2),&wsd); //初始化套接字下面介绍一些套接字函数1:WSAStartup函数:用于初始化动态连接库,而且不可或缺 int WSA 阅读全文
posted @ 2011-08-09 18:08 计算机技术 阅读(4017) 评论(0) 推荐(0)
摘要: 使用信标对象实现线程同步 信标对象也属于系统内核对象之一,它包含有计数,当使用计数为0时,信标对象处于无信号状态;当使用计数大于0时,信标计数处于有信号状态。 相关函数: CreateSemaphore:用于创建一个信标对象 HANDLE CreateSemaphore(LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,LONG lInitialCount,LONG lMaxinumCount,LPCTSTR lpName); lpSemaphoreAttributes:表示安全属性,可以是NULL lInitialCount:初始计数 lMaxinumC 阅读全文
posted @ 2011-08-08 16:09 计算机技术 阅读(156) 评论(0) 推荐(0)
摘要: 使用关键代码段实现线程同步关键代码段又称临界区,指的是一小段代码,在代码执行前,它需要独占某些资源。在程序中通常将多个线程同时访问某个资源的代码作为临界区。相关函数 InitializeCriticalSection:用于初始化临界区对象 void InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection) lpCriticalSection:表示一个临界区对象的指针 EnterCriticalSection:用于等待临界区对象的所有权 void EnterCriticalSection( LPCRITICAL_SECTIO. 阅读全文
posted @ 2011-08-08 16:08 计算机技术 阅读(236) 评论(0) 推荐(0)
摘要: 源码下载地址:http://download.csdn.net/source/3503308第四:休闲放松 有些玩家希望在玩游戏过程中听歌放松等休闲,所以我自己设计了一个简易的mp3、mp4播放器播放器能够对各个盘符中的mp3、mp4文件进行搜索,免去玩家的查阅对于播放器,大家可以用MFC里面的Windows Media Player控件 对于歌曲的搜索,需要递归函数实现,也可以用CFindFile类实现void CMusicDlg::ListDir(CString Dir){ _finddata_t fdata; long done; //char tempdir[MAX... 阅读全文
posted @ 2011-08-08 15:11 计算机技术 阅读(431) 评论(0) 推荐(0)
摘要: 源码下载地址:http://download.csdn.net/source/3503308第三:设计师 好的程序不仅能够让玩家玩设计好的游戏,还应该让他们的新想法得以实现,这就需要为他们提供设计平台 1:布局在游戏界面中,新建一个类来完成里面的全部功能,玩家可以点选右边的图来设计自己的想法左边是布局,可以用一个CRect数组设置其区域CRect pic[6];//用于存储六个图片的位置 CRect place[64];//用于存储64个格子的位置BOOL CDesignDlg::OnInitDialog() { num=0;//默认初始为第十关 chosed=0;//默认选中的是墙 //初. 阅读全文
posted @ 2011-08-08 14:55 计算机技术 阅读(368) 评论(0) 推荐(0)
摘要: 第二:制作菜单,完善功能源码下载地址:http://download.csdn.net/source/3503308 一:选关功能 自己要为游戏设置一些关数,而且难度应该递增,这个选关的对话框需要新建,主要是返回一个表示关数的数值void CPushBoxDlg::OnChose() { CchoseDlg dlg; dlg.m_chose_hard=num_hard; dlg.DoModal(); UpdateData(true); UpdateData(false); num_hard=dlg.m_chose_hard; CPushBoxDlg::Initi_State(ii,jj); s 阅读全文
posted @ 2011-08-08 14:40 计算机技术 阅读(706) 评论(0) 推荐(0)
摘要: MFC开发自己的推箱子游戏源码下载地址:http://download.csdn.net/source/3503308第一:推箱子游戏的主界面 游戏的主界面其实就是8×8的区域,在初始化函数中定义它们的矩形区域,里面是我自己收集的8个选关void CPushBoxDlg::Initi_State(int i,int j){ //int i,j; video_flag=0; num_video=-1; text=""; num_step=0; num_DB=0;//初始化箱子和目的地重合个数 for(i=0;i<8;i++) for(j=0;j<8;j+ 阅读全文
posted @ 2011-08-08 14:10 计算机技术 阅读(1162) 评论(0) 推荐(0)
摘要: 使用互斥对象实现线程同步 互斥对象属于系统内核对象,它能够使线程拥有对某个资源的绝对访问权。互斥对象主要包含使用数量,线程ID和递归计数器等信息。其中线程ID表示当前拥有互斥对象的线程,递归计数器表示线程拥有互斥对象的次数。 互斥对象的使用方式:当互斥对象的线程ID为0时,表示互斥对象不被任何线程拥有,此时系统会发出该互斥对象的通知信号。等待互斥对象的某个线程将会拥有该互斥对象,同时互斥对象的线程ID为拥有该互斥对象线程的ID。 当互斥对象的线程ID不是0时,表示当前有线程拥有该互斥对象。系统不会发出互斥对象的通知信号。其他等待互斥对象的线程继续等待,直到拥有互斥对象的线程释放互斥对象的拥有权 阅读全文
posted @ 2011-08-08 13:40 计算机技术 阅读(640) 评论(0) 推荐(0)
摘要: 线程同步,由于多个线程同时访问进程中的同一个资源,这就可能造成线程之间的混乱,因此需要线程同步解决相关问题1:使用事件对象实现线程同步 相关函数 CreateEvent:用于创建一个事件对象 HANDLE CreateEvent(LPSECURITY_ATTRIBUTES lpEventAttributes,BOOL bManualReset, BOOL bInitialState,LPCTSTR lpName); lpEventAttributes:表示事件对象的安全属性 bManualReset:表示事件对象的类型,TRUE表示人工重置事件对象,FALSE表示自动重置事件 对象 bIni. 阅读全文
posted @ 2011-08-08 13:07 计算机技术 阅读(1869) 评论(0) 推荐(0)
摘要: //如果是利用h=AfxBeginThread()创建线程,需要获取句柄,h->m_hThread线程的挂起在CreateThread()等函数创建线程时,可以指定线程的挂起状态,在运行过程中也可以挂起线程 DWORD SuspendThread(HANDLE hThread); hThread表示线程的句柄 返回值:成功,返回值为之前挂起的线程次数,失败返回0Xffffffff线程的唤醒通过唤醒线程恢复线程的执行 DWORD ResumeThread(HANDLE hThread);线程的终止3种方式//建议第一种方法 1:DWORD dwExit; BOOL ret=GetExitT 阅读全文
posted @ 2011-08-07 17:13 计算机技术 阅读(3014) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 9 ··· 23 下一页