📄 gamemain.pas
字号:
unit gamemain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,qsocket2,winsock,DePacket,packetstruct,unit2,unit1,recvmessage,
sendmessage,idmessgae;
type
TGamemain = class(TObject)
private
public
blone:boolean;
buffer1:array [0..BUFFERSIZE] of char;
constructor Create;
destructor Destroy;override;
procedure selcetloga;//初始化与服务器连接
procedure longin(username:pchar;password:pchar);//选择服务器和用户登陆
procedure startgame;
end;
var
Fsock:TSocket;
leng:integer;
implementation
procedure messagepro;//消息循环
var
p:TGamemain;
err,j:integer;
begin
p:=TGamemain.Create;
p.blone:=true;
j:=0;
if Fsock=-1 then exit;
form2.Memo2.Lines.Add('接受游戏信息');
while p.blone do
begin
sleep(1);
fillchar(p.buffer1,BUFFERSIZE,$00);
fillchar(buff,BUFFERSIZE,$00);
err:=recv(Fsock,p.buffer1,BUFFERSIZE,0);
if err=0 then
begin
break;
end;
if err<>-1 then
begin
leng:=err;
for j:=0 to err do
begin
char(buff[j]):=p.buffer1[j];
end;
msgrecv;
end;
end;
StopNet(Fsock);
form2.Memo2.Lines.Add('消息接受停止');
form2.Memo2.Lines.Add('游戏结束');
end;
constructor TGamemain.Create;//初始化类
begin
Inherited Create;
fillchar(buffer1,BUFFERSIZE,$00);
blone:=true;
end;
destructor TGamemain.Destroy;
begin
StopNet(Fsock);
end;
procedure TGamemain.selcetloga;//初始化与主服务器连接
var
rr:boolean;
i,j:integer;
begin
i:=0;
rr:=setbet;
if rr=false then
begin
messagebox(form2.Handle,'初始化SOCKET失败','Error',MB_OK);
exit;
end;
setup('210.51.35.136',40000,Fsock);
connenctsend(Fsock);
form2.Memo2.Lines.Add('正在打开游戏,请等待');
sleep(1);
i:=recv(Fsock,buff,BUFFERSIZE,0);
form2.Memo2.Lines.Add('正在连接,请等待');
publicrecv1(Fsock);
msgsend(Fsock,buf_4,3); //送给服务器的第二个
publicrecv2(Fsock);
StopNet(Fsock);
form2.Button3.Enabled:=true;
end;
procedure TGamemain.longin(username:pchar;password:pchar);//选择服务器和用户登陆
var
rr:boolean;
begin
rr:=setbet;
if rr=false then
begin
messagebox(form2.Handle,'初始化SOCKET失败','Error',MB_OK);
exit;
end
else
begin
setup('210.51.35.136',40000,Fsock);
msgsend(Fsock,send3,5);
recv(Fsock,buff,BUFFERSIZE,0);
recv(Fsock,buff,BUFFERSIZE,0);
form2.Button3.Enabled:=true;
end;
logoname(username,password);
msgsend(Fsock,coded,strlen(coded));
into(Fsock);
{send_1(Fsock);
recv1(Fsock);
StopNet(Fsock);}
form2.Button1.Enabled:=true;
end;
procedure TGamemain.startgame;//开始进入游戏
var
err,i:integer;
PID,dwtime: Dword;
eror,rr:boolean;
begin
send_1(Fsock);
recv1(Fsock);
MyList:= TList.Create;
lpList:= TList.Create;
rr:=setbet;
if rr=false then
begin
messagebox(form2.Handle,'初始化SOCKET失败','Error',MB_OK);
exit;
end;
eror:=setup('210.51.35.136',40011,Fsock);
if eror=false then
begin
form2.Memo2.Lines.Add('网络连接错误');
exit;
end
else
form2.Button1.Enabled:=false;
dwtime:=gettickcount;
SetNoBlock(Fsock);
N:=$10;
msgsend(Fsock,coco,strlen(coco));
CreateThread(nil, 1024, @messagepro, nil, 0, PID);
form2.Timer1.Enabled:=true;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -