首页 > 编程知识 正文

虚幻4引擎用什么语言开发,神游戏模拟器开发者模式翻译

时间:2023-05-03 12:28:57 阅读:156638 作者:1976

TDD测试驱动开发

测试驱动开发,英文全名Test-Driven Development,简称TDD,是一种不同于传统软件开发流程的新开发方法。它要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行这有助于编写简洁、可用、高质量的代码,并加快开发过程。

因为————来自Sogou百科,所以可以利用该思路一步一步地实现每个小功能,实现游戏的开发。

首先,创建两个主要是游戏框架的源文件test.c。 里面有游戏实现的大致逻辑,另一个game.c主要用于存储打包的函数和实现小功能。

另一种方法是创建包含各种头文件和函数声明的头文件game.h。 其他源文件可以通过直接在开头写include'game.h '来使用此头文件的内容,而不是重复写对各种头文件的引用。

准备结束后,想想游戏一开始应该怎么样。 首先,您应该看到如下图所示的选择菜单

让你选择是开始游戏还是停止游戏。

因此,必须编写用于打印图形界面的函数menu (),如下图所示。

然后你输入你的选择。

注意:这里的选项设置得非常巧妙,读者需要在后期慢慢体会。 为什么不能输入其他数字呢?

进入游戏后,将显示初始化的界面,如下图所示。

基于这样的想法,我们设计的游戏也必须是一样的。 如下图所示。

然后,根据这些图元设计初始化函数InitBoard (和打印函数DispalyBoard )。 函数的自变量分别是数组开头元素的地址、横格数、纵格数。 三指有9个格子,可以用3x3的二维排列收纳棋子。 分割线用竖线和横线实现。 即初始化数组的某个元素后) )数组元素的横线分隔符是指在打印完第一行数组元素后,直接打印横线和竖线组合的图形。 有关具体的代码实现,请参见后面的源代码。 这里只是说明了代码的大致想法。

我现在开始下国际象棋。 输入您想下国际象棋的坐标,在棋盘上标记玩家的棋子“*”,然后计算机下国际象棋标记“#”。

当然,玩家不是程序员。 输入坐标时一定没有0。 数组角点标记从0开始。

程序还需要判断国际象棋的位置上是否已经有棋子。

计算机将棋的坐标一定要借用随机数生成函数。 首先在main函数中设定随机种子数srand((unsighed ) time (null ) ),然后从计算机将棋的函数ComputerMove ) )中获取随机数rand ) 3

每次下国际象棋都需要判断游戏是否结束,谁赢了。 是平局吗?

首先是横向三行,纵向三列,最后是验证两个对角线上的文字是否一致。

判断棋盘是否满,判断是否平局。

综上所述,需要编写以下五个函数。 初始化板函数、打印板函数、玩家国际象棋函数、计算机国际象棋函数,最后是判断胜负的函数。

源代码如下所示。

//game.hfile # include stdio.h # include stdlib.h # include time.h # define row3//3行#define COL 3 //列的column//初始化//玩家下国际象棋的voidplayermove (char board [ row ] [ col ],int row,int col ); //电脑将棋voidcomputermove (char board [ row ] [ col ],int row,int col ); //判断输赢的chariswin(charboard[row][col],int row,int col ); //test.cfile # include ' game.h ' void menu () printf (* * * * * * * * * * * * * * * * * * * cfile # include * * ) printf((*****0.exit********(n ) ); printf (* * * * * * * * * * * * * * * * * * * * * * * * * * * * (n () ) ) ) ) ) ) ) ) ) )。 //板初始化initboard(board,ROW,COL ); //打印板显示板(board,ROW,COL )的while(1) playermove(board,ROW,COL ); //玩家下国际象棋的displayboard(board,ROW,COL ); //棋战结束后立即打印棋盘//判断玩家是否赢了棋战的if('*'==iswin ) board、

ROW, COL))//IsWin函数返回值为'#'、'*'、'C'-游戏未完成,继续游戏、'T'-平局{printf("玩家赢了!n");break;}else if ('T' == IsWin(board, ROW, COL)){printf("平局~n");break;}ComputerMove(board, ROW, COL);//电脑下棋DisplayBoard(board, ROW, COL);//下完棋后立刻打印棋盘//电脑下完棋后判断电脑是否胜利if ('#' == IsWin(board, ROW, COL)){printf("您输了n");break;}else if ('T' == IsWin(board, ROW, COL)){printf("平局~n");break;}}DisplayBoard(board, ROW, COL);//展示最终的棋盘}int main(){int input = 0;srand((unsigned int)time(NULL));do{menu();printf("请选择>>n");scanf("%d", &input);switch (input){case 1:printf("开始三子棋游戏n");game();break;case 0:printf("退出游戏n");break;default:printf("输入错误,请重新输入n");break;}} while (input);return 0;}//game.c file#include"game.h"//初始化棋盘void InitBoard(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] = ' ';//初始化为空格}}}//打印棋盘void DisplayBoard(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++){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");}}//玩家下棋void PlayerMove(char board[ROW][COL], int row, int col){int x = 0;int y = 0;while (1){printf("请输入您想要下棋位置的坐标:");scanf("%d %d", &x, &y);if (x > 0 && x <= col && y > 0 && y <= row){if (' ' == board[y - 1][x - 1]){board[y - 1][x - 1] = '*';break;}else{printf("该位置已经有棋子了!n");}}else{printf("您输入的坐标不正确!n");}}}//电脑下棋void ComputerMove(char board[ROW][COL], int row, int col){while (1){int x = rand() % col;int y = rand() % row;if (' ' == board[y][x]){board[y][x] = '#';break;}}}//判断输赢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]){return board[i][1];//返回连成三个的字符}}//判断列for (i = 0; i < row; i++){if (board[0][i] == board[1][i] && board[1][i] == board[2][i]){return board[1][i];//返回连成三个的字符}}//判断斜线if (board[0][0] == board[1][1] && board[1][1] == board[2][2]){return board[1][1];//返回连成三个的字符}if (board[0][2] == board[1][1] && board[1][1] == board[2][0]){return board[1][1];//返回连成三个的字符}//判断平局-以上情况都没发生,而且每个格子都不是空的int j = 0;for (i = 0; i < row; i++){for (j = 0; j < col; j++){if (board[i][j] == ' '){return 'C';//游戏继续}}}return 'T';}

代码中有有一些注释解释代码的实现。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。