软著申请源代码Word文档格式.docx
《软著申请源代码Word文档格式.docx》由会员分享,可在线阅读,更多相关《软著申请源代码Word文档格式.docx(91页珍藏版)》请在冰豆网上搜索。
playing.ShowDialog();
this.Show();
//局域网对弈
privatevoidbutton2_Click(objectsender,EventArgse)
FormRoomformroom=newFormRoom();
formroom.ShowDialog();
privatevoidbutton3_Click(objectsender,EventArgse)
Application.Exit();
privatevoidbutton3_MouseEnter(objectsender,EventArgse)
Buttonbtn=(Button)sender;
btn.ForeColor=Color.Black;
btn.BackColor=Color.White;
privatevoidbutton3_MouseLeave(objectsender,EventArgse)
btn.ForeColor=Color.White;
btn.BackColor=Color.Black;
}
//-------------------Playing.cs---------//
publicpartialclassPlaying:
{
delegatevoidSetTextCallback(stringtext);
privateenumStatus
NotStarted=0,
InGame=1,
RemoveDead=2,
FillEmpty=3,
Ended=4
privateSystem.Threading.Threadpc_play;
privateBoardm_board=newBoard();
privateChess.ChessTypem_turn=Chess.ChessType.Black;
privateintm_secondsBlack=0;
privateintm_secondsWhite=0;
privateTimerm_timer=newTimer();
privateStatusm_status=Status.NotStarted;
publicChess.ChessTypeturn
get
returnm_turn;
set
m_turn=value;
this.SetTurn((m_turn.ToString()=="
Black"
)?
"
黑方"
:
白方"
);
publicPlaying()
floath=this.Size.Height-10;
floatw=this.Size.Width-140;
m_board.ReSize(0,0,w,h);
m_timer.Interval=1000;
m_timer.Tick+=newEventHandler(timer_Tick);
TimeSpantm=newTimeSpan(0,0,0);
labelTimeBlack.Text=tm.ToString();
labelTimeWhite.Text=tm.ToString();
labelTurn.Text="
;
privatevoidSetTurn(stringtext)
if(this.labelTurn.InvokeRequired)
SetTextCallbackd=newSetTextCallback(SetTurn);
this.Invoke(d,newobject[]{text});
else
this.labelTurn.Text=text;
//计时功能
privatevoidtimer_Tick(objectsender,EventArgse)
if(turn==Chess.ChessType.Black)
m_secondsBlack++;
TimeSpantm=newTimeSpan(0,0,m_secondsBlack);
elseif(turn==Chess.ChessType.White)
m_secondsWhite++;
TimeSpantm=newTimeSpan(0,0,m_secondsWhite);
if(pc_play!
=null&
&
!
pc_play.IsAlive)
pc_play.Abort();
pc_play.Join();
pc_play=null;
privatevoidOnFormClicked(objectsender,EventArgse)
//棋局结束
if(m_board.isGameOver)
this.buttonCalculate_Click(null,null);
m_board.isGameOver=false;
return;
//不是轮到黑子的时候禁止下棋
if(!
m_board.single||turn==Chess.ChessType.White)
//备份棋局
this.m_board.BackupChess();
MouseEventArgsargs=easMouseEventArgs;
if(args!
=null)
if(args.Clicks==1&
args.Button==MouseButtons.Left)
//计算鼠标点击的坐标位置
Chess.POSpos=m_board.mapPointsToBoard(args.X,args.Y);
if(pos.isValid)
//游戏中
if(m_status==Status.NotStarted||m_status==Status.InGame)
if(m_board.addChess(pos,turn))
turn=(turn==Chess.ChessType.Black)?
Chess.ChessType.White:
Chess.ChessType.Black;
if(m_status==Status.NotStarted)
m_timer.Start();
m_status=Status.InGame;
Invalidate();
if(m_status==Status.RemoveDead)
m_board.toggleDead(pos);
if(m_board.single)//人机对弈模式
pc_play=newSystem.Threading.Thread(newSystem.Threading.ThreadStart(ComputerPlay));
pc_play.Start();
delegatevoidButtonDelegate(Buttonbtn,boolflag);
privatevoidSetButton(Buttonbtn,boolflag)
if(btn.InvokeRequired)
ButtonDelegatebuttonDelegate=newButtonDelegate(SetButton);
this.Invoke(buttonDelegate,newobject[]{btn,flag});
btn.Enabled=flag;
privatevoidComputerPlay()
//计算下一步棋
Chess.POSpos=m_board.Play(2,turn);
//计算棋局结果
m_status=Status.FillEmpty;
m_board.fillBoardWithChess();
stringstrResult=m_board.caclulateResult();
m_board.removeFilledChess();
MessageBox.Show(strResult,"
结果"
m_board.single=false;
this.SetButton(this.btnCalc,false);
this.SetButton(this.btnLetOtherGo,false);
this.SetButton(this.btnAgain,false);
this.m_timer.Stop();
//显示棋子序号
privatevoidcheckBoxShowNumber_CheckedChanged(objectsender,EventArgse)
m_board.showIndex=checkBoxShowNumber.Checked;
//让子功能
privatevoidbuttonLetOtherGo_Click(objectsender,EventArgse)
if(this.turn==Chess.ChessType.Black)
turn=Chess.oppsiteType(turn);
if(m_board.single)
//求和功能
privatevoidbuttonCalculate_Click(objectsender,EventArgse)
this.btnCalc.Enabled=false;
this.btnLetOtherGo.Enabled=false;
this.btnAgain.Enabled=false;
//开始游戏
privatevoidbtnStart_Click(objectsender,EventArgse)
DialogResultresult=MessageBox.Show("
确定要开始新游戏吗?
"
"
新游戏"
MessageBoxButtons.YesNo);
if(result==DialogResult.Yes)
m_board.newGame();
m_board.single=true;
//人机对弈
m_secondsBlack=0;
m_secondsWhite=0;
turn=Chess.ChessType.Black;
m_timer.Stop();
m_board.markAllChessAsLive();
m_status=Status.NotStarted;
this.btnCalc.Enabled=true;
this.btnLetOtherGo.Enabled=true;
this.btnAgain.Enabled=true;
//退出功能
privatevoidMainForm_FormClosing(objectsender,FormClosingEventArgse)
你确认要退出游戏吗?
提示"
if(result==DialogResult.No)
e.Cancel=true;
}
//主窗口大小
privatevoidMainForm_SizeChanged(objectsender,EventArgse)
//画棋盘
protectedoverridevoidOnPaint(PaintEventArgse)
Graphicsg=e.Graphics;
m_board.draw(g);
privatevoidbtnClose_Click(objectsender,EventArgse)
this.Close();
//悔棋功能
privatevoidbtnAgain_Click(objectsender,EventArgse)
if(this.m_board.MoveAgain())
//------------------Board.cs---------//
usingSystem.IO;
usingChessBlock=System.Collections.ArrayList;
usingSystem.Collections;
///<
summary>
///棋盘
/summary>
publicclassBoard
///单人模式
publicboolsingle=false;
///距离上方边缘的单位长度
privatestaticfloatmargin_top=10;
///距离左方边缘的单位长度
privatestaticfloatmargin_left=10;
///棋盘每条线之间的单位长度
privatestaticfloatgap=20;
///棋子大小
privatestaticfloatchessSize=8;
///数字字体大小
privatestaticfloatnumberSize=6;
///星位的大小
privatestaticfloatstarSize=3;
///棋盘的所有棋子
privateChess[,]m_Board=newChess[19,19];
///棋盘备份
privateChess[,]m_Board_backup=newChess[19,19];
///棋局记录对象
privateBoardRecorderm_recorder;
///最后一颗棋子
privateChessm_LastChess;
///最后一个棋子备份
privateChessm_LastChess_backup;
///最后一颗被吃的棋子
privateChessm_LastEatten;
///最后被吃棋子备份
privateChessm_LastEatten_backup;
///当前步数
privateintm_currentStep;
///是否显示棋子的编号
privateboolm_bShowIndex=false;
///模拟棋盘
privateChess[,]m_Sim_Board=newChess[19,19];
///模拟最后一颗棋子
privateChessm_Sim_LastChess;
///模拟最后一颗被吃的棋子
privateChessm_Sim_LastEatten;
///模拟当前步数
privateintm_Sim_currentStep;
///参数随机数,用于参数随机棋步
privateRandomr=newRandom();
///棋局结束
publicboolisGameOver=false;
///创建棋盘
publicBoard()
Clear();
///获取最后一颗