私がしたいことは、普通の掃海艇のゲームと同じように、隣り合っているすべての0を「回す」ことができることです。Minesweeper、どのくらい多くの0がお互いに隣り合っているのか分かりますか?
#include <cmath>
#include <cstdlib>
#include <iomanip>
#include <ctime>
#include <iostream>
int buscamina();
using namespace std;
int main() {
buscamina();
return 0;
}
int buscamina(){
srand(time(NULL));
int size=12, minastot=10;
int tablero[size][size];
char lqeuv[size-2][size-2];
int x, y, cm=0;
for(int i=0; i<size-2; i++)
for(int j=0; j<size-2; j++)
lqeuv[i][j]=88;
for(int i=0; i<size; i++)
for(int j=0; j<size; j++)
tablero[i][j]=0;
for(int i=0; i<minastot; i++){
int a=0, b=0;
a=rand()%(size-2);
b=rand()%(size-2);
++a; ++b;
if(tablero[a][b]==9)
minastot++;
tablero[a][b]=9;
}
for(int i=0; i<size; i++)
for(int j=0; j<size; j++)
if(tablero[i][j]==9)
for(int a=i-1; a<i+2; a++)
for(int b=j-1; b<j+2; b++)
if(tablero[a][b]!=9)
tablero[a][b]++;
for(int i=0; i<size; i++)
for(int j=0; j<size; j++)
if(tablero[i][j]==9)
++cm;
do{
cout << endl;
cout << setw(5);
for(int i=0; i<size-2; i++)
cout << i << " ";
cout << endl << endl;
for(int i=0; i<size-2; i++){
cout << i << setw(4);
for(int j=0; j<size-2; j++)
cout << lqeuv[i][j] << " ";
cout << endl;
}
do {
cout << "Coordenadas: ";
} while(scanf("%d %d", &x, &y)!=2);
if(tablero[x+1][y+1]==0)
lqeuv[x][y]=32;
else
lqeuv[x][y]=(tablero[x+1][y+1]+48);
}while (tablero[x+1][y+1]!=9);
for(int i=0; i<size; i++){
for(int j=0; j<size; j++)
cout << tablero[i][j] << " ";
cout << endl;
}
return 0;
}
はそれでは、ユーザーは座標0 2に入りましょう、ゼロであることを起こる、私は何をしたいだけではなく、その特定が空白にX座標から変更することができるようにすることですが、また、それの隣にある他のすべての0も、正規のMinesweeperのように、また私が使用した変数名はスペイン語であるので、翻訳もタイプさせてください。
- buscamina - 掃海艇
- tablero - ボード
- lqeuv - wtus(ユーザーが見ているもの)
- minastot - totmines(総鉱山)
- センチメートル - MC(鉱山カウンタ)
マローさん、ありがとうございました。私は大学での講座を取っているので、あなたが提案したように別の機能を作ってしまいました。私はクラスを使用することができませんでした。私は元のコードでコメントしました。あなたがコーディングを改善することができる他のヒントはありますか? –
ゲームを書くには、runメソッドを、入力(この場合はコード内にコメントを入力する)、ステップ(マイニングコメントを選択)、描画(テーブルのコメントを表示)などの呼び出し関数の無限ループのみを含むようにしてくださいあなたの短い例ではそれほど重要ではありませんでした。次に、C言語の入力をC++のcinに置き換えるといいかもしれません。また、コードの可読性も非常に重要です。 'lqeuv [i] [j] = 'X'は' lqeuv [i] [j] = 88'よりはるかに優れています。また、答えたように質問をチェックすることも役に立ちます。 –
私はC++で昏睡状態で区切られた2つの数字入力を得る方法がわからないので、Cスタイルの入力だけを使用しました。私は今質問に答えました!どうもありがとう。 –