⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pgame.pas

📁 网络对站平台
💻 PAS
📖 第 1 页 / 共 2 页
字号:
  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 + -