?? pgame.pas
字號:
CardHandle.Add(LShowCard);
if copy(inttostr(Ltep.Tag), 2, 1) = '0' then LShowCard.ShowDeck := True;
end;
procedure TFgame.LookValue(Sender: TObject);
begin
if TReNameCard(Sender).Tag = 10 then
TReNameCard(Sender).ShowDeck := not TReNameCard(Sender).ShowDeck;
end;
procedure TFgame.FormCreate(Sender: TObject);
begin
CardHandle := TList.Create;
JPGParth := ExtractFilePath(Application.ExeName) + 'CardPic\'
end;
procedure TFgame.SHowGifTip(IBevel: TBevel);
begin
RxGifTip.Top := IBevel.Top;
RxGifTip.Left := IBevel.Left;
end;
procedure TFgame.SHowButtom(IState: boolean);
begin
ChoseMoney.Visible := IState;
BTsendCard.Visible := IState;
BtPass.Visible := IState;
Application.ProcessMessages;
end;
function TFgame.TurnSelf(ISelfIdx: byte): boolean;
begin
Result := False;
if GMyGame.CurrPlayerIndex = ISelfIdx then
Result := True;
end;
procedure TFgame.RzComboBox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
Lbuff: RCTS_Chat;
begin
if Key = VK_RETURN then begin
if TComboBox(Sender).Items.Add(TComboBox(Sender).Text) > 10 then
TComboBox(Sender).Items.Delete(0);
Lbuff.TabID := Fmain.TabID;
Lbuff.PlayerID := Fmain.PlayerIdxIntab;
Lbuff.Content := TComboBox(Sender).Text;
Fmain.SendHead(Fmain.GameClient, Cmid_CTS_Chat);
TalktoEveryBady(Fmain.GameClient, Lbuff);
TComboBox(Sender).Text := '';
end;
end;
procedure TFgame.RzBitBtn7Click(Sender: TObject);
begin
RxGifTip.Animate := not RxGifTip.Animate;
end;
procedure TFgame.RzBitBtn6Click(Sender: TObject);
begin
RxGifTip.Visible := not RxGifTip.Visible;
end;
procedure TFgame.TakeTimeBegin(Iplayer: PRplayer);
begin
TurnTimer.Enabled := True;
FTurnBeginTime := Time;
RzProgressBar1.Percent := 0;
end;
procedure TFgame.SetCurrLable(Iplayer: PRplayer);
begin
lbCurrPlayer.Caption := Format('輪到玩家<%s>出牌了' + #13 +
' 您可以選擇跟注、' + '加注、或者' + #13 + '放棄這局(可以乘早少輸點分^_^)' + #13
+ '記時結束不出牌就算自動放棄' + #13 + '當前累計賭金%dW贏了就是您的'
, [Iplayer^.Name, lbCurrPlayer.Tag]);
end;
function TFgame.CurrIsPassUser: boolean;
begin
Result := GMyGame.PlayerArr[GMyGame.CurrPlayerIndex].PlayerInfo^.PassCurrGame;
end;
procedure TFgame.TurnTimerTimer(Sender: TObject);
begin
RzProgressBar1.Percent := SecondsBetween(time, FTurnBeginTime) * 100 div 30;
if SecondsBetween(Time, FTurnBeginTime) > 30 then begin
RzProgressBar1.Percent := 0;
GMyGame.PlayerArr[GMyGame.CurrPlayerIndex].PlayerInfo^.PassCurrGame := True;
ShowNext; // 顯示下一用戶
end;
end;
procedure TFgame.SendCards(Ibuff: RSTC_PlayerSendCards);
begin
ShowCard(GMyGame.PlayerArr[Ibuff.PlayerIdx].InCard(GMyGame.GetOneCard), //畫出下一圖
GMyGame.PlayerArr[Ibuff.PlayerIdx].Postion, GMyGame.PlayerArr[Ibuff.PlayerIdx].CurrCardCount);
GMyGame.PlayerArr[Ibuff.PlayerIdx].PlayerInfo^.TotMoney := GMyGame.PlayerArr[Ibuff.PlayerIdx].PlayerInfo^.TotMoney - Ibuff.Scores;
lbCurrPlayer.Tag := lbCurrPlayer.Tag + Ibuff.Scores;
GMyGame.LastMoney := Ibuff.Scores;
ShowNext; //準備下一家
end;
procedure TFgame.ShowNext;
begin
if GMyGame.NeedCheckWin then begin
PlayerWined(GMyGame.CheckGameWined);
end
else begin
TurnTimer.Enabled := False;
RzProgressBar1.Percent := 0;
FTurnBeginTime := Time;
repeat
GMyGame.NextPlayer;
until not CurrIsPassUser; //下一用戶
ChoseMoney.Text := Inttostr(GMyGame.LastMoney); //設置與上局同樣的錢
BTsendCard.Caption := '跟';
if TurnSelf(Fmain.PlayerIdxIntab) then
SHowButtom(true); //如果輪到自己就把按鈕繪制出來
SetCurrLable(GMyGame.PlayerArr[GMyGame.CurrPlayerIndex].PlayerInfo); //顯示當前用戶和賭金
SHowGifTip(GetPostBelve(GMyGame.PlayerArr[GMyGame.CurrPlayerIndex].Postion, 6)); //顯示提示當前用戶
TurnTimer.Enabled := True;
end;
end;
procedure TFgame.SHowName(IPost: sPlayerPostion; Iplayer: PRplayer);
begin
case IPost of //
sdown: begin
LbDown.Caption := Iplayer^.Name;
ImgDown.Picture.LoadFromFile(JPGParth + 'down.bmp');
ImgDown.Visible:=True;
end;
sright: begin
LbRight.Caption := Iplayer^.Name;
ImgRight.Picture.LoadFromFile(JPGParth + 'right.bmp');
ImgRight.Visible:=True;
end;
sup: begin
Lbup.Caption := Iplayer^.Name;
Imgup.Picture.LoadFromFile(JPGParth + 'up.bmp');
Imgup.Visible:=True;
end;
sleft: begin
LbLeft.Caption := Iplayer^.Name;
imgLeft.Picture.LoadFromFile(JPGParth + 'left.bmp');
imgLeft.Visible:=True;
end;
end; // case
end;
procedure TFgame.BtPassClick(Sender: TObject);
var
Lbuff: RSTC_PlayerPass;
begin
Fmain.SendHead(Fmain.GameClient, Cmid_STC_UserPass);
Lbuff.TabID := Fmain.TabID;
Lbuff.PLayerIdx := GMyGame.CurrPlayerIndex;
Fmain.GameClient.WriteBuffer(Lbuff, sizeof(Lbuff));
end;
procedure TFgame.ChoseMoneyChange(Sender: TObject);
begin
BTsendCard.Caption := '下注';
end;
procedure TFgame.ChoseMoneySelect(Sender: TObject);
begin
if Strtoint(ChoseMoney.Text) < GMyGame.LastMoney then
Application.MessageBox('對不起,不能選擇比上家更小的賭金,請重新選擇賭金', '說明');
ChoseMoney.Text := inttostr(GMyGame.LastMoney);
end;
procedure TFgame.BTsendCardClick(Sender: TObject);
var
Lbuff: RSTC_PlayerSendCards;
begin
SHowButtom(False);
Fmain.SendHead(Fmain.GameClient, Cmid_STC_UserSendCards);
Lbuff.TabID := Fmain.TabID;
Lbuff.PlayerIdx := GMyGame.CurrPlayerIndex;
Lbuff.Scores := Strtoint(ChoseMoney.text);
Fmain.GameClient.WriteBuffer(Lbuff, Sizeof(Lbuff));
end;
procedure TFgame.ChoseMoneyKeyPress(Sender: TObject; var Key: Char);
begin
key := #0;
end;
procedure TFgame.PlayerWined(Iidx: byte);
var
I: Integer;
begin
for I := 0 to CardHandle.Count - 1 do // Iterate
if TReNameCard(CardHandle.Items[i]).ShowDeck then
TReNameCard(CardHandle.Items[i]).ShowDeck := False;
TurnTimer.Enabled := False;
showmessage(Format('贏家 昵稱: %s ID: %d',
[GMyGame.PlayerArr[Iidx].PlayerInfo^.Name, Iidx]));
RzBitBtn2.Visible := True;
GMyGame.PlayerArr[Iidx].PlayerInfo^.TotMoney :=
GMyGame.PlayerArr[Iidx].PlayerInfo^.TotMoney + lbCurrPlayer.Tag;
AddMoney(Fmain.GameClient);
GameFree;
end;
procedure TFgame.RzBitBtn4Click(Sender: TObject);
var
I: Integer;
begin
for I := 0 to Fgame.ComponentCount - 1 do // Iterate
if Fgame.Components[i] is TBevel then
(Fgame.Components[i] as TBevel).Visible := not (Fgame.Components[i] as TBevel).Visible;
end;
procedure TFgame.Timer1Timer(Sender: TObject);
begin
RzProgressBar1.Percent := RzProgressBar1.Percent + 5;
end;
procedure TFgame.TalktoEveryBady(Icon: TIdTcpClient; Ibuff: RCTS_Chat);
begin
Icon.WriteBuffer(Ibuff, sizeof(Ibuff));
end;
procedure TFgame.AddShow(Icontent: string);
begin
if Showmemo.Lines.Add(Icontent) > 500 then Showmemo.Clear;
SendMessage(Showmemo.Handle, EM_SCROLLCARET, 0, 0);
end;
procedure TFgame.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if Fmain.Tabing then begin
Fmain.LeaveTab(Fmain.GameClient);
end;
end;
procedure TFgame.AddMoney(ICon: TIdTCPClient);
var
I: Integer;
Lbuff: RCTS_UseWin;
begin
for I := 0 to high(GMyGame.PlayerArr) - 1 do // Iterate
GMyGame.PlayerArr[i].PlayerInfo^.ReadGame:=False;
Fmain.SendHead(Fmain.GameClient, Cmid_CTS_Userwin);
Lbuff.TabId := Fmain.TabID;
Lbuff.PlayIdx := Fmain.PlayerIdxIntab;
Lbuff.AddScore := lbCurrPlayer.Tag;
LbCurrPlayer.Tag := 0;
ICon.WriteBuffer(Lbuff, Sizeof(Lbuff));
end;
procedure TFgame.VisibleName(Ipost: sPlayerPostion);
begin
case IPost of //
sdown: begin
LbDown.Caption := '';
ImgDown.Visible:=False;
end;
sright: begin
LbRight.Caption := '';
ImgRight.Visible:=False;
end;
sup: begin
Lbup.Caption := '';
Imgup.Visible:=False;
end;
sleft: begin
LbLeft.Caption := '';
imgLeft.Visible:=False;
end;
end; // case
end;
procedure TFgame.ShowRule;
var
S: Pchar;
begin
S := Pchar('您知道梭哈嗎?就電影上XX賭王玩那種。簡單介紹一下,此游戲簡單、激烈' +
'即講技巧也講運氣。玩法:開局每人發2張牌,然后由玩家根據自己的牌來下注,下注后可以獲得一張牌,' +
'您可以跟上一位玩家下同樣的注或者比他下更大的注。根據自己的牌來決定是否放棄這局,' +
'早點放棄的話可以少輸點。拿到大牌的時候可以多下賭金來贏錢。每人5張牌后比較輸贏,贏家可以獲得所有賭金。' +
'比較規則: 同花順>鐵支(4張同樣的帶1張其它的)>葫蘆(3張同樣帶一對)>同花>順子>3條>2對>對子>散牌' +
'如果是同樣的牌類則比較各人最大的牌');
AddShow(S);
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -