游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2728|回复: 4

一天时间做的Tic-Tac-Toe游戏

[复制链接]

187

主题

6490

帖子

6491

积分

论坛元老

团长

Rank: 8Rank: 8

积分
6491
发表于 2008-2-13 12:11:00 | 显示全部楼层 |阅读模式
截图:
sf_2008213121126.png

187

主题

6490

帖子

6491

积分

论坛元老

团长

Rank: 8Rank: 8

积分
6491
 楼主| 发表于 2008-2-13 12:12:00 | 显示全部楼层

Re: 一天时间做的Tic-Tac-Toe游戏

嗯,这是可执行文件和资源文件:

sf_2008213121212.rar

73.47 KB, 下载次数:

187

主题

6490

帖子

6491

积分

论坛元老

团长

Rank: 8Rank: 8

积分
6491
 楼主| 发表于 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(&quotictureBox","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;

187

主题

6490

帖子

6491

积分

论坛元老

团长

Rank: 8Rank: 8

积分
6491
 楼主| 发表于 2008-2-13 12:14:00 | 显示全部楼层

Re:一天时间做的Tic-Tac-Toe游戏

Afflatus脚本语言开发的的第一个游戏作品哦!希望大家多多支持,谢谢~~

3

主题

127

帖子

229

积分

中级会员

Rank: 3Rank: 3

积分
229
发表于 2008-2-13 12:39:00 | 显示全部楼层

Re:一天时间做的Tic-Tac-Toe游戏

支持~继续努力!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-20 04:34

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表