エラー:~のオーバーロードが曖昧です。
とでます。
どういう意味でしょうか?
エラー:オーバーロードについて
Re: エラー:オーバーロードについて
とりあえずググってみませんか?
[search=google]オーバーロードが曖昧です[/search]
[search=google]オーバーロードが曖昧です[/search]
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: エラー:オーバーロードについて
http://www.geocities.co.jp/SiliconValle ... 2.html#o&d
すいません、自分にはうまく説明できません。
とりあえずここを見るか、もう少し調べるか、他の方の返信を待ってください。
すいません、自分にはうまく説明できません。
とりあえずここを見るか、もう少し調べるか、他の方の返信を待ってください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: エラー:オーバーロードについて
#include<stdio.h>
#include<stdlib.h>
#define T 10//縦のマス
#define Y 10//横のマス
#define Bom 10//爆弾の数
int GetRandom(int min,int max);
int Creat(int map,int bom);
int main(void)
{
//**************関数設定****************
int state[T][Y]={0},ex[T][Y],g,h,i,j,k,yoko0;
//state=状態,ex=有無.g,h,i,j,k=添字,yoko0=上の数
//state[][]=0:通常時,1:開いてるとき,2:旗付
int xx,yy,x,y,z,bomx,bomy,boms,hold=5;
//x,y=マップ上の座標,bomx,y=爆弾の座標
//z=旗or開,xx,yy=配列上の座標,hold=switchの判別式,boms=周りの爆弾の個数
int dd;
//**************初期設定****************
for(g=0;g<T;g++){//初期フィールド製作
for(h=0;h<Y;h++){
printf("■");
}
printf("%d\n",g+1);
}
for(yoko0=0;yoko0<Y;yoko0++){
printf("%2d",yoko0+1);
}printf("\n");
for(i=0;i<Bom;i++){//爆弾設定
do{
bomx=GetRandom(0,T);
bomy=GetRandom(0,Y);
}while(ex[bomx][bomy]==1);
ex[bomx][bomy]=1;
};
printf("1:開ける2:旗付け");//旗or開
do{
scanf("%d",z);
}while(z!=1 || z!=2);
//**************メインプログラム開始******************
do{
//***************プレイヤー行動********************
do{
printf("T=");//旗or開座標
scanf("%d",&x);
xx=x-1;
printf("Y=");
scanf("%d",&y);
yy=y-1;
if(state[xx][yy]==1 && z==1){
printf("開いてます");
}
if(state[xx][yy]==2 && z==2){
printf("立ってます");
}
}while((state[xx][yy]==1 && z==1) || (state[xx][yy]==2 && z==2));
//******************見えない処理*********************
if(z==1)state[xx][yy]=1;//開決定
if(z==2)state[xx][yy]=2;//旗決定
for(j=0;j<T;j++){
for(k=0;k<Y;k++){
if(state[j][k]==1){
if(j==0) hold=1;//最上段
if(j==T-1) hold=2;//最下段
if(k==0) hold=3;//最左段
if(k==Y-1) hold=4;//最右段
if(hold==5) hold=0;//中心
}
//***************************マス処理***************************
if(ex[j][k]==0)
switch(hold){
//*****************中心*****************
case 0:
if(ex[j-1][k-1]==0 && ex[j-1][k]==0 && ex[j-1][k+1]==0 && ex[j][k-1]==0){
if(ex[j][k+1]==0 && ex[j+1][k-1]==0 && ex[j+1][k]==0 && ex[j+1][k+1]==0){
state[j-1][k-1]=1;
state[j-1][k]=1;
state[j-1][k+1]=1;
state[j][k-1]=1;
state[j][k+1]=1;
state[j+1][k-1]=1;
state[j+1][k]=1;
state[j+1][k+1]=1;
}
}
if(ex[j-1][k-1]==1) boms++;
if(ex[j-1][k]==1) boms++;
if(ex[j-1][k+1]==1) boms++;
if(ex[j][k-1]==1) boms++;
if(ex[j][k+1]==1) boms++;
if(ex[j+1][k-1]==1) boms++;
if(ex[j+1][k]==1) boms++;
if(ex[j+1][k+1]==1) boms++;
break;
//******************最上段*************
case 1:
if(ex[j+1][k]==0) state[j+1][k]=1;
if(ex[j+1][k]==1) boms++;
if(!(k==0)){
if(ex[j][k-1]==0) boms++;
if(ex[j+1][k-1]==0) boms++;
}
if(!(k==T-1)){
if(ex[j][k+1]==0) boms++;
if(ex[j+1][k+1]==0) boms++;
break;
//*******************最下段*************
case 2:
if(ex[j-1][k]==0) state[j-1][k]=1;
if(ex[j-1][k]==1) boms++;
if(!(k==0)){
if(ex[j][k-1]==0) boms++;
if(ex[j-1][k-1]==0) boms++;
}
if(!(k==T-1)){
if(ex[j][k+1]==0) boms++;
if(ex[j-1][k+1]==0) boms++;
break;
//****************最左段*************
case 3:
if(ex[j][k+1]==0) state[j][k+1]=1;
if(ex[j][k+1]==1) boms++;
if(!(j==0)){
if(ex[j][k+1]==0) boms++;
if(ex[j-1][k+1]==0) boms++;
}
if(!(k==T-1)){
if(ex[j][k+1]==0) boms++;
if(ex[j+1][k+1]==0) boms++;
}
break;
//**************最右段***************
case 4:
if(ex[j][k-1]==0) state[j][k-1]=1;
if(ex[j][k-1]==1) boms++;
if(!(j==0)){
if(ex[j][k-1]==0) boms++;
if(ex[j-1][k-1]==0) boms++;
}
if(!(k==T-1)){
if(ex[j][k-1]==0) boms++;
if(ex[j+1][k-1]==0) boms++;
}
break;
};//switch終了
Creat(state[j][k],boms);
}//for(k)終了
printf("\n");
}//fpr(j)終了
}while(dd==0);
return 0;
}
//*****************その他の関数*******************
int GetRandom(int min,int max);//ランダム設定
{
return min + (int)(rand()*(max-min+1.0)/(1.0+RAND_MAX));
}
int Creat(int map,int bom)//マップ製作
{
if(bom==0){
switch(map){
case 0:
printf("■");
break;
case 1:
printf("□");
break;
case 2:
printf("▲");
break;
};
}
else{
printf("%d",bom);
}
return 0;
}
マウスを対応させるやり方をまだ知らないので
こうなりました。
※開発途中でまだ他にもエラーがあります
Re: エラー:オーバーロードについて
178行目:
//*****************その他の関数*******************
int GetRandom(int min,int max);//ランダム設定
{
return min + (int)(rand()*(max-min+1.0)/(1.0+RAND_MAX));
}
赤字の部分がおかしいです。
//*****************その他の関数*******************
int GetRandom(int min,int max);//ランダム設定
{
return min + (int)(rand()*(max-min+1.0)/(1.0+RAND_MAX));
}
赤字の部分がおかしいです。
Re: エラー:オーバーロードについて
とりあえずコンパイルが通るようにしてみました。
#include<stdio.h>
#include<stdlib.h>
#define T 10//縦のマス
#define Y 10//横のマス
#define Bom 10//爆弾の数
int GetRandom(int min,int max);
int Creat(int map,int bom);
int main(void)
{
//**************関数設定****************
int state[T][Y]={0},ex[T][Y],g,h,i,j,k,yoko0;
//state=状態,ex=有無.g,h,i,j,k=添字,yoko0=上の数
//state[][]=0:通常時,1:開いてるとき,2:旗付
int xx,yy,x,y,z,bomx,bomy,boms,hold=5;
//x,y=マップ上の座標,bomx,y=爆弾の座標
//z=旗or開,xx,yy=配列上の座標,hold=switchの判別式,boms=周りの爆弾の個数
int dd;
//**************初期設定****************
for(g=0;g<T;g++){//初期フィールド製作
for(h=0;h<Y;h++){
printf("■");
}
printf("%d\n",g+1);
}
for(yoko0=0;yoko0<Y;yoko0++){
printf("%2d",yoko0+1);
}printf("\n");
for(i=0;i<Bom;i++){//爆弾設定
do{
bomx=GetRandom(0,T);
bomy=GetRandom(0,Y);
}while(ex[bomx][bomy]==1);
ex[bomx][bomy]=1;
};
printf("1:開ける2:旗付け");//旗or開
do{
scanf("%d",&z);
}while(z!=1 && z!=2);
//**************メインプログラム開始******************
do{
//***************プレイヤー行動********************
do{
printf("T=");//旗or開座標
scanf("%d",&x);
xx=x-1;
printf("Y=");
scanf("%d",&y);
yy=y-1;
if(state[xx][yy]==1 && z==1){
printf("開いてます");
}
if(state[xx][yy]==2 && z==2){
printf("立ってます");
}
}while((state[xx][yy]==1 && z==1) || (state[xx][yy]==2 && z==2));
//******************見えない処理*********************
if(z==1)state[xx][yy]=1;//開決定
if(z==2)state[xx][yy]=2;//旗決定
for(j=0;j<T;j++){
for(k=0;k<Y;k++){
if(state[j][k]==1){
if(j==0) hold=1;//最上段
if(j==T-1) hold=2;//最下段
if(k==0) hold=3;//最左段
if(k==Y-1) hold=4;//最右段
if(hold==5) hold=0;//中心
}
//***************************マス処理***************************
boms=0;
if(ex[j][k]==0)
switch(hold){
//*****************中心*****************
case 0:
if(ex[j-1][k-1]==0 && ex[j-1][k]==0 && ex[j-1][k+1]==0 && ex[j][k-1]==0){
if(ex[j][k+1]==0 && ex[j+1][k-1]==0 && ex[j+1][k]==0 && ex[j+1][k+1]==0){
state[j-1][k-1]=1;
state[j-1][k]=1;
state[j-1][k+1]=1;
state[j][k-1]=1;
state[j][k+1]=1;
state[j+1][k-1]=1;
state[j+1][k]=1;
state[j+1][k+1]=1;
}
}
if(ex[j-1][k-1]==1) boms++;
if(ex[j-1][k]==1) boms++;
if(ex[j-1][k+1]==1) boms++;
if(ex[j][k-1]==1) boms++;
if(ex[j][k+1]==1) boms++;
if(ex[j+1][k-1]==1) boms++;
if(ex[j+1][k]==1) boms++;
if(ex[j+1][k+1]==1) boms++;
break;
//******************最上段*************
case 1:
if(ex[j+1][k]==0) state[j+1][k]=1;
if(ex[j+1][k]==1) boms++;
if(!(k==0)){
if(ex[j][k-1]==0) boms++;
if(ex[j+1][k-1]==0) boms++;
}
if(!(k==T-1)){
if(ex[j][k+1]==0) boms++;
if(ex[j+1][k+1]==0) boms++;
}
break;
//*******************最下段*************
case 2:
if(ex[j-1][k]==0) state[j-1][k]=1;
if(ex[j-1][k]==1) boms++;
if(!(k==0)){
if(ex[j][k-1]==0) boms++;
if(ex[j-1][k-1]==0) boms++;
}
if(!(k==T-1)){
if(ex[j][k+1]==0) boms++;
if(ex[j-1][k+1]==0) boms++;
}
break;
//****************最左段*************
case 3:
if(ex[j][k+1]==0) state[j][k+1]=1;
if(ex[j][k+1]==1) boms++;
if(!(j==0)){
if(ex[j][k+1]==0) boms++;
if(ex[j-1][k+1]==0) boms++;
}
if(!(k==T-1)){
if(ex[j][k+1]==0) boms++;
if(ex[j+1][k+1]==0) boms++;
}
break;
//**************最右段***************
case 4:
if(ex[j][k-1]==0) state[j][k-1]=1;
if(ex[j][k-1]==1) boms++;
if(!(j==0)){
if(ex[j][k-1]==0) boms++;
if(ex[j-1][k-1]==0) boms++;
}
if(!(k==T-1)){
if(ex[j][k-1]==0) boms++;
if(ex[j+1][k-1]==0) boms++;
}
break;
};//switch終了
Creat(state[j][k],boms);
}//for(k)終了
printf("\n");
}//fpr(j)終了
}while(dd==0);
return 0;
}
//*****************その他の関数*******************
int GetRandom(int min,int max)//ランダム設定
{
return min + (int)(rand()*(max-min+1.0)/(1.0+RAND_MAX));
}
int Creat(int map,int bom)//マップ製作
{
if(bom==0){
switch(map){
case 0:
printf("■");
break;
case 1:
printf("□");
break;
case 2:
printf("▲");
break;
};
}
else{
printf("%d",bom);
}
return 0;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)