做视频背景音乐网站,良品铺子网络营销策划书,给网站首页图片做外网超链接_为什么会弹出一个服务器登录窗口,seo品牌优化整站优化目录
一.设计游戏框架
1.打印游戏菜单
2.输入选择判断#xff08;玩游戏/游戏结束/输入错误重新输入#xff09;
二、玩游戏过程设计
1.设计棋格存放棋子——二维数组
2.初始化棋盘——初始化为空格
3.打印棋盘——本质上就是打印数组
4.游戏过程——1.玩家走棋 2.…目录
一.设计游戏框架
1.打印游戏菜单
2.输入选择判断玩游戏/游戏结束/输入错误重新输入
二、玩游戏过程设计
1.设计棋格存放棋子——二维数组
2.初始化棋盘——初始化为空格
3.打印棋盘——本质上就是打印数组
4.游戏过程——1.玩家走棋 2.判断结果 3.电脑走棋 4.判断结果
⑴玩家走棋
Ⅰ 需要判断棋盘空格的合法性
Ⅱ 判断空格是否被占据
⑵判断输赢——四种结果
Ⅰ 玩家赢
Ⅱ 电脑赢
Ⅲ 游戏平局
Ⅴ 继续游戏
⑶电脑走棋
Ⅰ 用伪随机函数产生需要伪随机数种子生成器用空指针的时间函数生成时间戳
Ⅱ 判断空格是否被占据
附录头文件里的符号定义以及相关声明 一.设计游戏框架
1.打印游戏菜单
//游戏框架
int main()
{srand((unsigned int)time(NULL));int input 0;do{menu();printf(请输入:);scanf(%d, input);switch (input){case 1:game();break;case 0:printf(退出游戏\n);break;default:printf(选择错误重新选择:\n);break;}} while (input);return 0;
}
2.输入选择判断玩游戏/游戏结束/输入错误重新输入
//游戏菜单打印
void menu()
{printf(************************************\n);printf(************ 1.play ************\n);printf(************ 2.exit ************\n);printf(************************************\n);
}二、玩游戏过程设计
1.设计棋格存放棋子——二维数组
void game()
{//定义3*3的数组来存储棋子类型 存储数据char board[ROW][COL];//完成棋盘的初始化-初始化空格INit_board(board,ROW,COL);//打印棋盘——本质上就是打印数组Displayboard(board,ROW,COL);char ret 0;while (1){//玩家下棋Playerboard(board,ROW,COL);Displayboard(board, ROW, COL);// 判断游戏进行状态retIswin(board, ROW, COL);if (ret ! C)break;//电脑下棋Computerboard(board, ROW, COL);Displayboard(board, ROW, COL);if (ret ! C)break;}if (ret *){printf(玩家赢了\n);}else if (ret #){printf(电脑赢了\n);}else if (ret Q){printf(游戏平局\n);}Displayboard(board, ROW, COL);}
2.初始化棋盘——初始化为空格
//棋盘的初始化
void INit_board(char board[ROW][COL], int row, int col)
{int i 0;int j 0;for (i 0; i row; i){for (j 0; j col ; j){board[i][j] ;}}
}3.打印棋盘——本质上就是打印数组
//打印棋盘
void Displayboard(char board[ROW][COL], int row, int col)
{int i 0;for (i 0; i row; i){int j 0;for (j 0; j col; j){printf( %c , board[i][j]);if (j col - 1)printf(|);}printf(\n);if (i row - 1){for (j 0; j col; j){printf(---);if (j col - 1)printf(|);}printf(\n);}}}
4.游戏过程——1.玩家走棋 2.判断结果 3.电脑走棋 4.判断结果
⑴玩家走棋
Ⅰ 需要判断棋盘空格的合法性
Ⅱ 判断空格是否被占据
//玩家下棋
void Playerboard(char board[ROW][COL], int row, int col)
{int x 0;int y 0;//判断棋盘空格的合法性//判断空格是否被占据while (1){printf(请玩家下棋:);scanf(%d %d, x, y);//判断棋盘空格的合法性if (x 1 x 3 y 1 y 3 board[x - 1][y - 1] ){board[x - 1][y - 1] *;break;}//判断空格是否被占据else if(x 1 x 3 y 1 y 3 board[x - 1][y - 1] ! ){printf(所下棋格被占据请玩家重新下棋\n);}elseprintf(下棋超出范围请玩家重新下棋\n);}}
⑵判断输赢——四种结果
Ⅰ 玩家赢
Ⅱ 电脑赢
Ⅲ 游戏平局
Ⅴ 继续游戏
//判断结果
char Iswin(char board[ROW][COL], int row, int col)
{int i 0;//玩家或电脑赢棋的情况//判断行for (i 0; i row; i){if (board[i][0] board[i][1] board[i][1] board[i][2] board[i][0] ! )return board[i][0];}//判断列for (i 0; i col; i){if (board[0][i] board[1][i] board[1][i] board[2][i]board[i][0] ! )return board[2][i];}//判断对角线if (board[0][0] board[1][1] board[1][1] board[2][2] board[1][1] ! )return board[1][1];if (board[2][0] board[1][1] board[1][1] board[0][2] board[1][1] ! )return board[1][1];//判断和棋的情况 返回1棋盘已满 返回0棋盘未放满int ret Isfull(board,ROW,COL);if (ret 1){return Q;}if (ret 0)return C;}
//为判断和棋情况单独分的函数
int Isfull(char board[ROW][COL], int row, int col)
{int i 0;int j 0;for (i 0; i row; i){for (j 0; j col; j){if (board[i][j] )return 0;}}return 1;}
⑶电脑走棋
Ⅰ 用伪随机函数产生需要伪随机数种子生成器用空指针的时间函数生成时间戳
Ⅱ 判断空格是否被占据
//电脑下棋
void Computerboard(char board[ROW][COL], int row, int col)
{printf(请电脑下棋:\n);while (1)//判断空格是否被占据{int x rand() % 3;int y rand() % 3;if (board[x][y] ){board[x][y] #;break;}}
}
附录头文件里的符号定义以及相关声明
//头文件的相关引用
#include stdlib.h
#include time.h//符号的定义
#define ROW 3
#define COL 3//函数的声明
//初始化棋盘的函数
void INit_board(char board[ROW][COL], int row, int col);//打印棋盘的函数
void Displayboard(char board[ROW][COL],int row, int col);//玩家下棋的函数
void Playerboard(char board[ROW][COL], int row, int col);//电脑下棋
void Computerboard(char board[ROW][COL], int row, int col);//判断游戏进行的状态
char Iswin(char board[ROW][COL], int row, int col);int Isfull(char board[ROW][COL], int row, int col);