|
|

楼主 |
发表于 2008-2-13 12:13:00
|
显示全部楼层
代码
include(libwinformstyle.lib);
int bytPlayerTurn; //0=NoGame, 1=PlayerOne, 2=PlayerTwo;
int intP1Score,intP2Score;
int i;
string Status[0..8];
procedure main;
int intWS;
createwindow("Form","frmMain");
frmMain.Move(1000,1000,5000,3800);
intWS:=GetWindowStyle(frmMain.hwnd);
frmMain.Caption:="Tic-Tac-Toe";
intWS:=intWS-WS_SIZEBOX;
SetWindowStyle(frmMain.hwnd,intWS);
createwindow(" ictureBox","ResBlank","frmMain");
LoadPicture("resBlank.gif");
frmMain.ResBlank.ReceivePicture("Picture");
createwindow("PictureBox","ResX","frmMain");
LoadPicture("resX.gif");
frmMain.ResX.ReceivePicture("Picture");
createwindow("PictureBox","ResO","frmMain");
LoadPicture("resO.gif");
frmMain.ResO.ReceivePicture("Picture");
createwindow("PictureBox","Square0","frmMain");
createwindow("PictureBox","Square1","frmMain");
createwindow("PictureBox","Square2","frmMain");
createwindow("PictureBox","Square3","frmMain");
createwindow("PictureBox","Square4","frmMain");
createwindow("PictureBox","Square5","frmMain");
createwindow("PictureBox","Square6","frmMain");
createwindow("PictureBox","Square7","frmMain");
createwindow("PictureBox","Square8","frmMain");
frmMain.Square0.Move(1,0,1000,1000);
frmMain.Square1.Move(1008,0,1000,1000);
frmMain.Square2.Move(2016,0,1000,1000);
frmMain.Square3.Move(1,1008,1000,1000);
frmMain.Square4.Move(1008,1008,1000,1000);
frmMain.Square5.Move(2016,1008,1000,1000);
frmMain.Square6.Move(1,2016,1000,1000);
frmMain.Square7.Move(1008,2016,1000,1000);
frmMain.Square8.Move(2016,2016,1000,1000);
frmMain.Square0.BorderStyle:=0;
frmMain.Square1.BorderStyle:=0;
frmMain.Square2.BorderStyle:=0;
frmMain.Square3.BorderStyle:=0;
frmMain.Square4.BorderStyle:=0;
frmMain.Square5.BorderStyle:=0;
frmMain.Square6.BorderStyle:=0;
frmMain.Square7.BorderStyle:=0;
frmMain.Square8.BorderStyle:=0;
frmMain.Square8.BorderStyle:=0;
call ClearSquares;
frmMain.Square0.Visible:=1;
frmMain.Square1.Visible:=1;
frmMain.Square2.Visible:=1;
frmMain.Square3.Visible:=1;
frmMain.Square4.Visible:=1;
frmMain.Square5.Visible:=1;
frmMain.Square6.Visible:=1;
frmMain.Square7.Visible:=1;
frmMain.Square8.Visible:=1;
createwindow("Label","lblP1","frmMain");
frmMain.lblP1.Move(3300,200,1000,300);
frmMain.lblP1.Caption:="Player One";
frmMain.lblP1.Visible:=1;
createwindow("Label","lblP2","frmMain");
frmMain.lblP2.Move(3300,700,1000,300);
frmMain.lblP2.Caption:="Player Two";
frmMain.lblP2.Visible:=1;
createwindow("Label","lblP1Score","frmMain");
frmMain.lblP1Score.Move(4300,200,1000,300);
frmMain.lblP1Score.Caption:="0";
frmMain.lblP1Score.Visible:=1;
createwindow("Label","lblP2Score","frmMain");
frmMain.lblP2Score.Move(4300,700,1000,300);
frmMain.lblP2Score.Caption:="0";
frmMain.lblP2Score.Visible:=1;
createwindow("Button","cmdNewGame","frmMain");
frmMain.cmdNewGame.Move(3300,2000,1000,400);
frmMain.cmdNewGame.Caption:="New Game";
frmMain.cmdNewGame.Visible:=1;
createwindow("Button","cmdExit","frmMain");
frmMain.cmdExit.Move(3300,2500,1000,400);
frmMain.cmdExit.Caption:="Exit";
frmMain.cmdExit.Visible:=1;
Redraw(frmMain.hwnd);
bytPlayerTurn:=0;
intP1Score:=0;
intP2Score:=0;
frmMain.Show;
endprocedure;
procedure frmMain.Square0_Click;
call NowSquareClick(0);
endprocedure;
procedure frmMain.Square1_Click;
call NowSquareClick(1);
endprocedure;
procedure frmMain.Square2_Click;
call NowSquareClick(2);
endprocedure;
procedure frmMain.Square3_Click;
call NowSquareClick(3);
endprocedure;
procedure frmMain.Square4_Click;
call NowSquareClick(4);
endprocedure;
procedure frmMain.Square5_Click;
call NowSquareClick(5);
endprocedure;
procedure frmMain.Square6_Click;
call NowSquareClick(6);
endprocedure;
procedure frmMain.Square7_Click;
call NowSquareClick(7);
endprocedure;
procedure frmMain.Square8_Click;
call NowSquareClick(8);
endprocedure;
procedure NowSquareClick(int Index);
int flag;
if(bytPlayerTurn=0);messagebox("No Game is in progress at this time.");exit;endif;
if(bytPlayerTurn=1);
if(Status[Index]<>"");messagebox("This spot is already taken.");exit;endif;
Status[Index]:="X";
PaintSquare(Index,"X");
flag:=CheckWin("X");
if((CheckWin("X"))=1);
messagebox("Player One is the winner!");
intP1Score:=intP1Score+1;
frmMain.lblP1Score.Caption:=intP1Score;
bytPlayerTurn:=0;
exit;
endif;
bytPlayerTurn:=2;
else;
if(Status[Index]<>"");messagebox("This spot is already taken.");exit;endif;
Status[Index]:="O";
PaintSquare(Index,"O");
if(CheckWin("O")=1);
messagebox("Player Two is the winner!");
intP2Score:=intP2Score+1;
frmMain.lblP2Score.Caption:=intP2Score;
bytPlayerTurn:=0;
exit;
endif;
bytPlayerTurn:=1;
endif;
endprocedure;
procedure PaintSquare(int Index,string CharToPaint);
if(CharToPaint="X");
frmMain.ResX.SendPicture("Picture");
else;
frmMain.ResO.SendPicture("Picture");
endif;
switch(Index);
case(0);frmMain.Square0.ReceivePicture("Picture");break;
case(1);frmMain.Square1.ReceivePicture("Picture");break;
case(2);frmMain.Square2.ReceivePicture("Picture");break;
case(3);frmMain.Square3.ReceivePicture("Picture");break;
case(4);frmMain.Square4.ReceivePicture("Picture");break;
case(5);frmMain.Square5.ReceivePicture("Picture");break;
case(6);frmMain.Square6.ReceivePicture("Picture");break;
case(7);frmMain.Square7.ReceivePicture("Picture");break;
case(8);frmMain.Square8.ReceivePicture("Picture");break;
endswitch;
endprocedure;
procedure CheckWin(string strLetter);
if((Status[0]=strLetter)&&(Status[1]=strLetter)&&(Status[2]=strLetter));
return(1);exit;
endif;
if((Status[3]=strLetter)&&(Status[4]=strLetter)&&(Status[5]=strLetter));
return(1);exit;
endif;
if((Status[6]=strLetter)&&(Status[7]=strLetter)&&(Status[8]=strLetter));
return(1);exit;
endif;
if((Status[0]=strLetter)&&(Status[3]=strLetter)&&(Status[6]=strLetter));
return(1);exit;
endif;
if((Status[1]=strLetter)&&(Status[4]=strLetter)&&(Status[7]=strLetter));
return(1);exit;
endif;
if((Status[2]=strLetter)&&(Status[5]=strLetter)&&(Status[8]=strLetter));
return(1);exit;
endif;
if((Status[0]=strLetter)&&(Status[4]=strLetter)&&(Status[8]=strLetter));
return(1);exit;
endif;
if((Status[2]=strLetter)&&(Status[4]=strLetter)&&(Status[6]=strLetter));
return(1);exit;
endif;
return(0);
endprocedure;
procedure frmMain.cmdNewGame_Click;
call ClearSquares;
bytPlayerTurn:=1;
endprocedure;
procedure ClearSquares;
frmMain.ResBlank.SendPicture("Picture");
frmMain.Square0.ReceivePicture("Picture");
frmMain.Square1.ReceivePicture("Picture");
frmMain.Square2.ReceivePicture("Picture");
frmMain.Square3.ReceivePicture("Picture");
frmMain.Square4.ReceivePicture("Picture");
frmMain.Square5.ReceivePicture("Picture");
frmMain.Square6.ReceivePicture("Picture");
frmMain.Square7.ReceivePicture("Picture");
frmMain.Square8.ReceivePicture("Picture");
for(i:=0,i<=8,i:=i+1);Status:="";next;
endprocedure;
procedure frmMain.cmdExit_Click;
end;
endprocedure; |
|