今連鎖ゲーム作ってますがなかなか連鎖してくれません
縦の列か横の列のマークが二つ以上そろったら
そろったところを消すをやりたいのですがエラーが出てしまって出来ません
どうしたら出来ますか?教えてください
void cak1
で検査しています
念のためデータは↓です
http://share-3.kokuoutyou.server.co.jp/お願いしてるやつ/連鎖ゲーム.zip
void cak1()
{
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
if(map[j]==0)
{
return;
}
if(map[j]==map[i+1][j])
{
map[i+1][j]=0;
if(map[j]==map[i+2][j])
{
map[i+2][j]=0;
if(map[j]==map[i+3][j])
{
map[i+3][j]=0;
if(map[j]==map[i+4][j])
{
map[i+4][j]=0;
}
}
}
map[j]=0;
}
if(map[j]==map[i-1][j])
{
map[i-1][j]=0;
if(map[j]==map[i-2][j])
{
map[i-2][j]=0;
if(map[j]==map[i-3][j])
{
map[i-3][j]=0;
if(map[j]==map[i-4][j])
{
map[i-4][j]=0;
}
}
}
map[i][j]=0;
}
if(map[i][j]==map[i][j+1])
{
map[i][j+1]=0;
if(map[i][j]==map[i][j+2])
{
map[i][j+2]=0;
if(map[i][j]==map[i][j+3])
{
map[i][j+3]=0;
if(map[i][j]==map[i][j+4])
{
map[i][j+4]=0;
}
}
}
map[i][j]=0;
}
if(map[i][j]==map[i][j-1])
{
map[i][j-1]=0;
if(map[i][j]==map[i][j-2])
{
map[i][j-2]=0;
if(map[i][j]==map[i][j-3])
{
map[i][j-3]=0;
if(map[i][j]==map[i][j-4])
{
map[i][j-4]=0;
}
}
}
map[i][j]=0;
}
}
}
}
連鎖ゲーム
Re:連鎖ゲーム
void cak1()
{
for(int k=0;k<5;k++)
{
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
if(map[k][j]==map[i+1][j])
{
map[i+1][j]=0;
if(map[k][j]==map[i+2][j])
{
map[i+2][j]=0;
if(map[k][j]==map[i+3][j])
{
map[i+3][j]=0;
if(map[k][j]==map[i+4][j])
{
map[i+4][j]=0;
}
}
}
map[k][j]=0;
}
if(map[k][j]==map[j+1])
{
map[j+1]=0;
if(map[k][j]==map[j+2])
{
map[j+2]=0;
if(map[k][j]==map[j+3])
{
map[j+3]=0;
if(map[k][j]==map[j+4])
{
map[k][j+4]=0;
}
}
}
map[k][j]=0;
}
}
}
for(int i=5;i<0;i--)
{
for(int j=0;j<5;j++)
{
if(map[k][j]==map[i+1][j])
{
map[i+1][j]=0;
if(map[k][j]==map[i+2][j])
{
map[i+2][j]=0;
if(map[k][j]==map[i+3][j])
{
map[i+3][j]=0;
if(map[k][j]==map[i+4][j])
{
map[i+4][j]=0;
}
}
}
map[k][j]=0;
}
if(map[k][j]==map[j][i+1])
{
map[j][i+1]=0;
if(map[k][j]==map[j][i+2])
{
map[j][i+2]=0;
if(map[k][j]==map[j][i+3])
{
map[j][i+3]=0;
if(map[k][j]==map[j][i+4])
{
map[j][i+4]=0;
}
}
}
map[k][j]=0;
}
}
}
}
}
↑までは分かったけどまだ出来ない見たい
{
for(int k=0;k<5;k++)
{
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
if(map[k][j]==map[i+1][j])
{
map[i+1][j]=0;
if(map[k][j]==map[i+2][j])
{
map[i+2][j]=0;
if(map[k][j]==map[i+3][j])
{
map[i+3][j]=0;
if(map[k][j]==map[i+4][j])
{
map[i+4][j]=0;
}
}
}
map[k][j]=0;
}
if(map[k][j]==map[j+1])
{
map[j+1]=0;
if(map[k][j]==map[j+2])
{
map[j+2]=0;
if(map[k][j]==map[j+3])
{
map[j+3]=0;
if(map[k][j]==map[j+4])
{
map[k][j+4]=0;
}
}
}
map[k][j]=0;
}
}
}
for(int i=5;i<0;i--)
{
for(int j=0;j<5;j++)
{
if(map[k][j]==map[i+1][j])
{
map[i+1][j]=0;
if(map[k][j]==map[i+2][j])
{
map[i+2][j]=0;
if(map[k][j]==map[i+3][j])
{
map[i+3][j]=0;
if(map[k][j]==map[i+4][j])
{
map[i+4][j]=0;
}
}
}
map[k][j]=0;
}
if(map[k][j]==map[j][i+1])
{
map[j][i+1]=0;
if(map[k][j]==map[j][i+2])
{
map[j][i+2]=0;
if(map[k][j]==map[j][i+3])
{
map[j][i+3]=0;
if(map[k][j]==map[j][i+4])
{
map[j][i+4]=0;
}
}
}
map[k][j]=0;
}
}
}
}
}
↑までは分かったけどまだ出来ない見たい
Re:連鎖ゲーム
void cak1()
{
for(int i=1;i<6;i++)
{
for(int j=1;j<6;j++)
{
if(map[i-1][j-1]==0)
{
return;
}
if(map[i-1][j-1]==map[i-1][j-1])
{
map[i-1][j-1]=0;
if(map[i-1][j-1]==map[j-1])
{
map[j-1]=0;
if(map[i-1][j-1]==map[i+1][j-1])
{
map[i+1][j-1]=0;
if(map[i-1][j-1]==map[i+2][j-1])
{
map[i+2][j-1]=0;
}
}
}
map[i-1][j-1]=0;
}
if(map[i-1][j-1]==map[j-1])
{
map[i-1][j-1]=0;
if(map[i-1][j-1]==map[j])
{
map[j]=0;
if(map[i-1][j-1]==map[j+1])
{
map[i+1][j+1]=0;
if(map[i-1][j-1]==map[j+2])
{
map[i+2][j+2]=0;
}
}
}
map[i-1][j-1]=0;
}
}
}
}
↑のどこが間違ってるか分かりません教えてください
{
for(int i=1;i<6;i++)
{
for(int j=1;j<6;j++)
{
if(map[i-1][j-1]==0)
{
return;
}
if(map[i-1][j-1]==map[i-1][j-1])
{
map[i-1][j-1]=0;
if(map[i-1][j-1]==map[j-1])
{
map[j-1]=0;
if(map[i-1][j-1]==map[i+1][j-1])
{
map[i+1][j-1]=0;
if(map[i-1][j-1]==map[i+2][j-1])
{
map[i+2][j-1]=0;
}
}
}
map[i-1][j-1]=0;
}
if(map[i-1][j-1]==map[j-1])
{
map[i-1][j-1]=0;
if(map[i-1][j-1]==map[j])
{
map[j]=0;
if(map[i-1][j-1]==map[j+1])
{
map[i+1][j+1]=0;
if(map[i-1][j-1]==map[j+2])
{
map[i+2][j+2]=0;
}
}
}
map[i-1][j-1]=0;
}
}
}
}
↑のどこが間違ってるか分かりません教えてください
Re:連鎖ゲーム
連続失礼します。
勝手ながらコメントを入れさせていただきました。
勘違いなども含んでいるかもしれませんが、一応…仕様と違うと思うものが多かったので…
void cak1(){
for(int i=1;i<6;i++){
for(int j=1;j<6;j++){
//消せるかの判定? このままでは終了判定?
if(map[i-1][j-1]==0){
//コンティニューでいいのでは?
return;
}
//必要? 打ち間違い?
if(map[i-1][j-1]==map[i-1][j-1]){
//判定済みは消す?
map[i-1][j-1]=0;
//一つ右と同じか判定 でも0で確定している。
if(map[i-1][j-1]==map[j-1]){
//すでに0で確定しているので意味ない?
map[j-1]=0;
//二つ右と判定 ここも0なら次へ
if(map[i-1][j-1]==map[i+1][j-1]){
//0と確定しているので意味ない
map[i+1][j-1]=0;
//もうひとつとなり3つ右と判定 0なら次へ
if(map[i-1][j-1]==map[i+2][j-1]){
//ここでも意味なし
map[i+2][j-1]=0;
}
}
}
//上で同じ処理しているため意味がない
map[i-1][j-1]=0;
}
//一つ右と判定
if(map[i-1][j-1]==map[j-1]){
//0にする
map[i-1][j-1]=0;
//右上と判定(左下を0,0とした場合)
if(map[i-1][j-1]==map[j]){
//0と比べて0なら0へするので意味なし。
map[j]=0;
//二つ上と判定
if(map[i-1][j-1]==map[j+1]){
//二つ右上を0に?なぜ…
map[i+1][j+1]=0;
//一つ右3つ上と判定
if(map[i-1][j-1]==map[j+2]){
//3つ右3つ上を0に…???
map[i+2][j+2]=0;
}
}
}
//もう一度0に…3回目?4かな?
map[i-1][j-1]=0;
}
}
}
}
勝手ながらコメントを入れさせていただきました。
勘違いなども含んでいるかもしれませんが、一応…仕様と違うと思うものが多かったので…
void cak1(){
for(int i=1;i<6;i++){
for(int j=1;j<6;j++){
//消せるかの判定? このままでは終了判定?
if(map[i-1][j-1]==0){
//コンティニューでいいのでは?
return;
}
//必要? 打ち間違い?
if(map[i-1][j-1]==map[i-1][j-1]){
//判定済みは消す?
map[i-1][j-1]=0;
//一つ右と同じか判定 でも0で確定している。
if(map[i-1][j-1]==map[j-1]){
//すでに0で確定しているので意味ない?
map[j-1]=0;
//二つ右と判定 ここも0なら次へ
if(map[i-1][j-1]==map[i+1][j-1]){
//0と確定しているので意味ない
map[i+1][j-1]=0;
//もうひとつとなり3つ右と判定 0なら次へ
if(map[i-1][j-1]==map[i+2][j-1]){
//ここでも意味なし
map[i+2][j-1]=0;
}
}
}
//上で同じ処理しているため意味がない
map[i-1][j-1]=0;
}
//一つ右と判定
if(map[i-1][j-1]==map[j-1]){
//0にする
map[i-1][j-1]=0;
//右上と判定(左下を0,0とした場合)
if(map[i-1][j-1]==map[j]){
//0と比べて0なら0へするので意味なし。
map[j]=0;
//二つ上と判定
if(map[i-1][j-1]==map[j+1]){
//二つ右上を0に?なぜ…
map[i+1][j+1]=0;
//一つ右3つ上と判定
if(map[i-1][j-1]==map[j+2]){
//3つ右3つ上を0に…???
map[i+2][j+2]=0;
}
}
}
//もう一度0に…3回目?4かな?
map[i-1][j-1]=0;
}
}
}
}
Re:連鎖ゲーム
↓を改造したらできる
void cak1()
{
for(int go=0;go<6;go++)
{
for(int og=0;og<6;og++)
{
if(map[go][og]<0){return;}
}
}
for(int i=1;i<6;i++)
{
for(int j=1;j<6;j++)
{
if(j>1)
{
if(map[i-1][j-1]==map[i-1][j])
{
xy[i-1][j]=1;
xy[i-1][j-1]=1;
}
}
if(j<4){
if(map[i-1][j-1]==map[i-1][j+1])
{
xy[i-1][j+1]=1;
xy[i-1][j-1]=1;
}
}
if(i>1)
{
if(map[i-1][j-1]==map[j-1])
{
xy[j-1]=1;
xy[i-1][j-1]=1;
}
}
if(i<4){
if(map[i-1][j-1]==map[i-1][j+1])
{
xy[i+1][j-1]=1;
xy[i-1][j-1]=1;
}
}
}
}
for(int i=0;i<5;i++){for(int k=0;k<5;k++){
if(xy[k]==1)
{
map[k]=0;
}
}}
for(int i=0;i<5;i++){for(int k=0;k<5;k++){xy[k]=0;}}
}
void cak1()
{
for(int go=0;go<6;go++)
{
for(int og=0;og<6;og++)
{
if(map[go][og]<0){return;}
}
}
for(int i=1;i<6;i++)
{
for(int j=1;j<6;j++)
{
if(j>1)
{
if(map[i-1][j-1]==map[i-1][j])
{
xy[i-1][j]=1;
xy[i-1][j-1]=1;
}
}
if(j<4){
if(map[i-1][j-1]==map[i-1][j+1])
{
xy[i-1][j+1]=1;
xy[i-1][j-1]=1;
}
}
if(i>1)
{
if(map[i-1][j-1]==map[j-1])
{
xy[j-1]=1;
xy[i-1][j-1]=1;
}
}
if(i<4){
if(map[i-1][j-1]==map[i-1][j+1])
{
xy[i+1][j-1]=1;
xy[i-1][j-1]=1;
}
}
}
}
for(int i=0;i<5;i++){for(int k=0;k<5;k++){
if(xy[k]==1)
{
map[k]=0;
}
}}
for(int i=0;i<5;i++){for(int k=0;k<5;k++){xy[k]=0;}}
}
Re:連鎖ゲーム
void cak1()
{
for(int go=0;go<6;go++)
{
for(int og=0;og<6;og++)
{
if(map[go][og]<0){return;}
}
}
for(int i=1;i<6;i++)
{
for(int j=1;j<6;j++)
{
if(i<5)
{
if(j<5)
{
if(map[i-1][j-1]==map[i-1][j])
{
xy[i-1][j]=1;
xy[i-1][j-1]=1;
}
if(map[i-1][j-1]==map[j-1])
{
xy[j-1]=1;
xy[i-1][j-1]=1;
}
}
}
if(i>2)
{
if(i>2)
{
if(map[i-1][j-1]==map[i-2][j-1])
{
xy[i-2][j-1]=1;
xy[i-1][j-1]=1;
}
if(map[i-1][j-1]==map[i-1][j-2])
{
xy[i-1][j-2]=1;
xy[i-1][j-1]=1;
}
}
}
}
}
for(int i=0;i<5;i++){
for(int k=0;k<5;k++){
if(xy[k]==1)
{
map[k]=0;
xy[k]=0;
}
}
}
}
↑で出来ましたw
{
for(int go=0;go<6;go++)
{
for(int og=0;og<6;og++)
{
if(map[go][og]<0){return;}
}
}
for(int i=1;i<6;i++)
{
for(int j=1;j<6;j++)
{
if(i<5)
{
if(j<5)
{
if(map[i-1][j-1]==map[i-1][j])
{
xy[i-1][j]=1;
xy[i-1][j-1]=1;
}
if(map[i-1][j-1]==map[j-1])
{
xy[j-1]=1;
xy[i-1][j-1]=1;
}
}
}
if(i>2)
{
if(i>2)
{
if(map[i-1][j-1]==map[i-2][j-1])
{
xy[i-2][j-1]=1;
xy[i-1][j-1]=1;
}
if(map[i-1][j-1]==map[i-1][j-2])
{
xy[i-1][j-2]=1;
xy[i-1][j-1]=1;
}
}
}
}
}
for(int i=0;i<5;i++){
for(int k=0;k<5;k++){
if(xy[k]==1)
{
map[k]=0;
xy[k]=0;
}
}
}
}
↑で出来ましたw