• 大小: 187KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-08-15
  • 语言: 其他
  • 标签: API  socket  联机  对战  

资源简介

以前上传过俄罗斯方块1.0版,只支持单机,现在的2.0版在1.0版的基础上加了自己的socket类,实现了局域网联机对战功能,并附有源码(服务器端与客户端对战,没有同时开始功能,速度也可以不一样,下落方块的种类也不是按同样的次序,没有道具功能,只是将自己的战况实时传输给对方)。 说明:由于我的socket类支持多个客户端连接,但是联机时只有两个视窗,一个自己的,一个对家的,所以当多个客户端接入服务器端时具体表现为:服务器端的战况都会广播给所有客户端,相当于大家观看服务器端演示,但是服务器端不显示任何一个客户端的战况;而当只有一个客户端连接服务器端时,才显示这个客户端的战况。 注意:加入游戏,断开连接这两个功能在执行时,是另开线程的,我故意让关闭按钮和拖曳客户端区域移动窗口功能失效,看上去像是程序当住了,其实没当住,因为此时拖曳标题栏还是能移动窗口,右键菜单也可以弹出,这个“当住”过程会在3秒钟左右,当客户端比较多时,服务器端的这个时间会相对长一点。 有问题联系:hastings1986@163.com

资源截图

代码片段和文件信息

#include “stdafx.h“
#include 
#include 
#include 
#include “emf.h“
#include “Wnd.h“
#include “SocketServer.h“
#include “SocketClient.h“
#include “resource.h“
#define ID_CHILD  1
#define ID_TEXT   2
#define ID_MATCH  3
#define ID_TIMER  8
#define TextWndWidth 6
#define ID_TIMERS timewait
#define ID_TIMERWAIT 300
#define WM_RESETWNDPOS (WM_USER+20) //lParam为bnet
#include “Els.h“
#pragma comment(lib“winmm.lib“)
#pragma comment(lib“Ws2_32.lib“)

struct DlgParam
{
bool    bBuilt;
Tstring szIP;
int     nPort;
};
struct BinData
{
BOOL   fState[CYDIVISIONS][CXDIVISIONS] ;
BOOL   ftmp[CYDIVISIONS][CXDIVISIONS] ;
LONG   valid[8] ;
int    score ;
int    bXiaoHang ;//0刷新全部1消行2移动3刚加入游戏时获取状态
};
struct ThreadParam
{
DlgParam*     pdlgparam;
SocketServer* pserv;
SocketClient* pclient;
BOOL*         pcanbeclose;
TCHAR*        szBuffer;
HWND          hwnd;
};
LRESULT CALLBACK WndProc   (HWND UINT WPARAM LPARAM) ;
BOOL    CALLBACK IPDlgProc   (HWND UINT WPARAM LPARAM) ;
LRESULT CALLBACK ChildWndProc (HWND UINT WPARAM LPARAM) ;
LRESULT CALLBACK TextWndProc (HWND hwnd UINT message WPARAM wParam LPARAM lParam) ;
LRESULT CALLBACK MatchWndProc (HWND hwnd UINT message WPARAM wParam LPARAM lParam) ;
int     IsWin(HWND hwnd BOOL fState[][CXDIVISIONS] BOOL ftmp[][CXDIVISIONS] int cxBlockint cyBlock);
void    Valid(HWND hwnd BOOL fState[][CXDIVISIONS] const LONG* valid int cxBlockint cyBlock);
void    ValidWin(HWND hwnd BOOL ftmp[][CXDIVISIONS] int cxBlockint cyBlock);
void    DrawEls(HWND hwnd HDC hdc HENHmetaFILE hemf int score int scorematch RECT* prect);
void    OnPaint(HDC hdcBOOL fState[][CXDIVISIONS]int cxClientint cyClientint cxBlockint cyBlock);
void    ResetWndPos(HWND hwndint cxClientint cyClientint bNet);
void    DoSomeThing(const BinData* pbindataSocketServer* pservSocketClient* pclientint bNetint clientcnt);
void    ConnectServer(LPVOID lpParam);
void    CloseServer(LPVOID lpParam);

TCHAR szAppName[] = TEXT (“eluosi“) ;
TCHAR szChildName[] = TEXT (“eluosi_Child“) ;
TCHAR szTextName[] = TEXT (“eluosi_text“) ;
TCHAR szMatchName[] = TEXT (“eluosi_match“) ;
HENHmetaFILE hemfRed  hemfBlue ;
HINSTANCE hInst ;
ElsType elstype ;
int   score scorematch speed = IDM_SPEED1 ;
int   bnet = 0 ;//是否为联机对战:1为主机;2为客户端;
const int TIMERSARR[]={1020304050607080901002003004005006007008009001000};
int   timewait = TIMERSARR[speed-IDM_SPEED1] ;//??
int   clientcnt=0;
ThreadParam threadparam;

int WINAPI WinMain (HINSTANCE hInstance HINSTANCE hPrevInstance
                    PSTR szCmdLine int iCmdShow)
{
HWND         hwnd ;
MSG          msg ;
HACCEL       hAccelTable;
WNDCLASS     wndclass ;

HDC          hdc ;
HBRUSH       hbr;
HBITMAP      hbmp;
hdc=CreateDC(TEXT(“DISPLAY“)NULLNULLNULL);
if(NULL==hdc)
{
MessageBox (NULL TEXT (“初始化失败!“) 
szAppName MB_IConerror)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      33374  2008-03-25 16:09  1.bmp

     文件      58662  2008-04-20 21:42  2.bmp

     文件      99328  2010-05-23 18:40  12.ncb

     文件        238  2010-05-23 18:39  12.plg

     文件      37645  2010-05-23 18:35  12.cpp

     文件       4995  2010-05-20 21:46  12.dsp

     文件        527  2008-04-04 20:30  12.dsw

     文件      50688  2010-05-23 18:40  12.opt

     文件      68078  2008-04-06 17:43  Els01.cpp

     文件     117794  2010-05-20 16:18  Els02.cpp

     文件        907  2010-05-20 14:12  Els.h

     文件       3148  2010-05-20 16:18  emf.cpp

     文件        428  2010-05-20 16:14  emf.h

     文件        766  2008-04-04 20:52  icon1.ico

     文件        506  2010-04-27 18:48  Lock.h

     文件      45152  2010-05-20 20:25  Res.aps

     文件       5364  2010-05-20 20:25  Res.rc

     文件       1811  2010-05-20 20:23  resource.h

     文件       9156  2008-06-13 19:49  run.wav

     文件      22885  2010-05-23 18:21  SocketClient.cpp

     文件       3250  2010-05-20 16:41  SocketClient.h

     文件      25939  2010-05-20 16:17  SocketServer.cpp

     文件       3328  2010-05-20 16:41  SocketServer.h

     文件       1480  2010-05-21 10:31  stdafx.h

     文件       3357  2010-05-20 16:18  Wnd.cpp

     文件       1087  2010-05-20 16:16  Wnd.h

     文件        556  2010-05-20 20:23  XPstyle.manifest

     文件     204800  2010-05-23 18:39  俄罗斯方块2.0版.exe

----------- ---------  ---------- -----  ----

               805249                    28

............此处省略1个文件信息

评论

共有 条评论