arrays - 如何通过将二维数组等同于具有 void 参数的函数来填充二维数组?
问题描述
我正在使用 2D 数组制作一个小游戏。我尝试制作一个函数,让你从一块干净的板子开始,并希望它以这样一种方式,即干净板子函数是一个右值,如果这有意义的话。
#include <stdio.h>
#include <stdlib.h>
#define MAX 8
#define EMPTY 0
#define BLACK 1
#define WHITE -1
//Fills the 2D array with 0s and places the 4 starting pieces in the middle
int **cleanboard(void){
int newboard[MAX][MAX];
(*newboard)[MAX] = malloc(sizeof*newboard*MAX);
for(int row=0; row<MAX; row++){
for(int col=0; col<MAX; col++){
newboard[row][col] = EMPTY;
}
}
newboard[3][3] = WHITE, newboard[4][4] = WHITE;
newboard[4][3] = BLACK, newboard[3][4] = BLACK;
return newboard;
}
//Displays the board
void printboard(int arr[][MAX]){
printf(" 1 2 3 4 5 6 7 8\n"); //Top numbers
for(int i=0; i<MAX; i++){
for(int j=0; j<MAX; j++){
if(j==0){printf("%d ", i+1);} //Side numbers
switch(arr[i][j]){ //Print piece
case 0: printf(" .");
break;
case 1: printf(" b");
break;
case -1: printf(" w");
break;
}
}
printf("\n");
}
}
int main(){
int **board;
board = cleanboard();
printboard(board);
return 0;
}
使用给定的代码,它输出:
1 2 3 4 5 6 7 8
1
但是,此示例是电路板的外观:
//Example 2D array:
int grid[MAX][MAX] = {{-1, 1, -1, 1, 0, -1, 1, 0},
{1, -1, -1, 1, 0, -1, -1, 1},
{1, 1, -1, 1, -1, 1, 1, 1},
{-1, 0, -1, -1, -1, 1, 1, -1},
{1, -1, 0, 1, 0, 1, 0, 0},
{0, 1, -1, 1, -1, -1, 1, -1},
{1, 1, 1, -1, 0, -1, -1, -1},
{0, -1, -1, -1, -1, 1, -1, 0}};
printboard(grid);
输出:
1 2 3 4 5 6 7 8
1 w b w b . w b .
2 b w w b . w w b
3 b b w b w b b b
4 w . w w w b b w
5 b w . b . b . .
6 . b w b w w b w
7 b b b w . w w w
8 . w w w w b w .
清洁板功能不存储值或导致打印板功能停止的东西。任何帮助表示赞赏。
解决方案
以下建议的代码:
- 创建董事会
- 初始化板
现在,建议的代码:
#include <stdio.h>
#include <stdlib.h>
#define MAX 8
#define EMPTY 0
#define BLACK 1
#define WHITE -1
//Fills the 2D array with 0s and places the 4 starting pieces in the middle
int **cleanboard(void)
{
int **newboard = malloc( MAX * sizeof( int ) );;
for(int row=0; row<MAX; row++)
{
newboard[row] = malloc( MAX * sizeof( int ) );
}
for(int row=0; row<MAX; row++)
{
for(int col=0; col<MAX; col++)
{
newboard[row][col] = EMPTY;
}
}
newboard[3][3] = WHITE;
newboard[4][4] = WHITE;
newboard[4][3] = BLACK;
newboard[3][4] = BLACK;
return newboard;
}
推荐阅读
- php - 请解决我在 laravel 中的包问题
- arrays - Swift 需要数组按 2 个属性排序,其中一个包含逗号
- javascript - 在 Vue js 中渲染动态组件需要帮助
- scroll - Flatlist - 设置高度和滚动
- expect - 手动运行时不会发生使用期望的重复响应
- jquery - jquery timepicker 将时间设置为 00:00:00
- python - 尝试安装 Pillow (python) 时出错
- scala - Spark-Snowflake 连接错误
- python - 我的为 Null 值返回 0 的序列化程序不起作用
- python - 带有 Python NetworkX 图的 Reingold Tilford 布局