-
大小: 187KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-08-15
- 語言: 其他
- 標(biāo)簽: API??socket??聯(lián)機(jī)??對戰(zhàn)??
資源簡介
以前上傳過俄羅斯方塊1.0版,只支持單機(jī),現(xiàn)在的2.0版在1.0版的基礎(chǔ)上加了自己的socket類,實(shí)現(xiàn)了局域網(wǎng)聯(lián)機(jī)對戰(zhàn)功能,并附有源碼(服務(wù)器端與客戶端對戰(zhàn),沒有同時(shí)開始功能,速度也可以不一樣,下落方塊的種類也不是按同樣的次序,沒有道具功能,只是將自己的戰(zhàn)況實(shí)時(shí)傳輸給對方)。
說明:由于我的socket類支持多個(gè)客戶端連接,但是聯(lián)機(jī)時(shí)只有兩個(gè)視窗,一個(gè)自己的,一個(gè)對家的,所以當(dāng)多個(gè)客戶端接入服務(wù)器端時(shí)具體表現(xiàn)為:服務(wù)器端的戰(zhàn)況都會廣播給所有客戶端,相當(dāng)于大家觀看服務(wù)器端演示,但是服務(wù)器端不顯示任何一個(gè)客戶端的戰(zhàn)況;而當(dāng)只有一個(gè)客戶端連接服務(wù)器端時(shí),才顯示這個(gè)客戶端的戰(zhàn)況。
注意:加入游戲,斷開連接這兩個(gè)功能在執(zhí)行時(shí),是另開線程的,我故意讓關(guān)閉按鈕和拖曳客戶端區(qū)域移動(dòng)窗口功能失效,看上去像是程序當(dāng)住了,其實(shí)沒當(dāng)住,因?yàn)榇藭r(shí)拖曳標(biāo)題欄還是能移動(dòng)窗口,右鍵菜單也可以彈出,這個(gè)“當(dāng)住”過程會在3秒鐘左右,當(dāng)客戶端比較多時(shí),服務(wù)器端的這個(gè)時(shí)間會相對長一點(diǎn)。
有問題聯(lián)系: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移動(dòng)3剛加入游戲時(shí)獲取狀態(tài)
};
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?;//是否為聯(lián)機(jī)對戰(zhàn):1為主機(jī);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)
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????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??XPst
?????文件?????204800??2010-05-23?18:39??俄羅斯方塊2.0版.exe
-----------?---------??----------?-----??----
???????????????805249????????????????????28
............此處省略1個(gè)文件信息
評論
共有 條評論