あるゲームというのはローゼンケーニッヒというもので,領地を増やしていくゲームなのですが得点計算の際に自分の領地が上下隣り合っていれば
その隣り合っている数の2乗になるというものです.そうでなければ1点となります.計算方法がわからないのでまったく完成していないのですが、あらかじめ計算する盤面を用意しました.この盤面では白○が13,赤●が23となります.解説お願いします.
#include<stdio.h>
#define WIDTH 9
#define HEIGHT 9
void print_board(int board[WIDTH*HEIGHT]);
void init_board(int board[WIDTH*HEIGHT]);
int main(){
int board[WIDTH*HEIGHT],i,atai;
init_board(board);
print_board(board);
return 0;
}
void init_board(int board[WIDTH*HEIGHT]){
int i;
for(i=0;i<WIDTH*HEIGHT;i++){
board[i]=0;
}
board[2]=board[23]=board[25]=board[34]=board[12]=board[13]=board[11]=board[15]=board[56]=1;
board[1]=board[35]=board[45]=board[57]=board[78]=board[92]=board[29]=board[28]=board[17]=board[16]=2;
}
void print_board(int board[WIDTH*HEIGHT]){
int i,x;
for(i=0;i<WIDTH*HEIGHT;i++){
if(board[i]==1){
printf("●");
}
else if(board[i]==2){
printf("○");
}
else{
printf("□");
}
if(i%9==8){
printf("\n");
}
}
}