(完整版)数据结构毕业课程设计-五子棋 联系客服

发布时间 : 星期日 文章(完整版)数据结构毕业课程设计-五子棋更新完毕开始阅读c33653aaaff8941ea76e58fafab069dc502247d2

有一个好的逻辑思维。将程序分成了多个功能函数,尽量的让一个函数的功能单一,只是在内部调用了其他的函数以辅助改函数功能的实现,比如判定坐标是否越界,坐标是否合法,悔棋的点的位置状态…… 这样便能做到各个击破,程序的形成也就变得畅通许多了。

五、课设总结

刚开始写这个程序,认为一定要用到 graphics.( \ printf( \ 欢迎试用五子棋系统\\n\ printf( \ \ for( int i= 0; i< strlen( Wel ); ++i ) {

putchar( Wel[i] ); Sleep( 200 ); }

putchar( 10 ); }

int Login( ) {

int Mode, Skip= 0; char Request; if( !Skip ) {

printf( \在这儿你能DIY( Do it youself! )你的棋子,每个棋子接受一个汉字\

printf( \ Y Orz N\\n\ scanf( \

if( Request== 'Y'|| Request== 'y' ) {

printf( \玩家一的 DIY 棋子 -->\ scanf( \ ChessBoard.Graph[1][2]= '\\0'; printf( \玩家二的 DIY 棋子 -->\ scanf( \ ChessBoard.Graph[2][2]= '\\0'; } }

printf( \请选择先手玩家:___ \\n\\n\

printf( \对应 玩家一 2 对应 玩家二\\n\ if( Request== 'Y'|| Request== 'y' )

Gotoxy( 10, 16 ); 原函数是 第一个参数为列,后一个参数为行,把Gotoxy函数做了更改 else

Gotoxy( 8, 16 ); scanf( \ if( Mode!= 1&& Mode!= 2 ) return Mode% 2+ 1; else

return Mode; }

void InitChessBiard( ) {

int TTop= ChessBoard.Stack.Top; fflush( stdin ); ChessBoard.Step= 0; ChessBoard.Stack.Top= 0; ChessBoard.Stack.Base= 0;

ChessBoard.Stack.Record[TTop][0]= 8; 栈的0号位存储初始化的棋盘位置 ChessBoard.Stack.Record[TTop][1]= 8; ChessBoard.MINBOX= 5; ChessBoard.FillGraph[0]=\┏\ ChessBoard.FillGraph[1]=\┳\ ChessBoard.FillGraph[2]=\┓\ ChessBoard.FillGraph[3]=\┣\ ChessBoard.FillGraph[4]=\╋\ ChessBoard.FillGraph[5]=\┫\ ChessBoard.FillGraph[6]=\┗\ ChessBoard.FillGraph[7]=\┻\ ChessBoard.FillGraph[8]=\┛\ strcpy( ChessBoard.Graph[1], \ strcpy( ChessBoard.Graph[2], \

memset( ChessBoard.Status, 0, sizeof( ChessBoard.Status ) ); }

bool Legal( int Point ) {

if( Point< 1|| Point> MAX 2+ 1 ) return false;

else

return true; }

bool Currect( int X, int Y ) {

if( Legal( X )&& Legal( Y ) ) return true; else

return false; }

void ChangeCoordinates( int _X, int _Y, int *X, int *Y ) {

*X= ( _X- 1 )* 2; *Y= ( _Y- 1 )* 4; }

void Draw( ) {

画棋盘

for( int i= 1; i<= MAX; ++i ) {

for( int j= 1; j<=MAX; ++j ) {

if( i== 1 ) {

if( j== 1 )