Yardım mayın tarlası oyunu kodunda error almak

EnDleSS12

Öğrenci
Katılım
18 Şubat 2023
Mesajlar
13
Reaksiyon puanı
5
Puanları
3
Yaş
20
Merhaba, kodda şu hatayı alıyorum. nasıl düzeltebilirim?
tek dosyada 2 public class açtım o nedenle mi error alıyorum anlayamadım. eğer bu nedenleyse nasıl çözülebilir bu durum?
Error: Could not **** or load main class ornekprojeler.MayinTarlasi$MainMetot
Caused by: java.lang.ClassNotFoundException: ornekprojeler.MayinTarlasi$MainMetot
Java:
package ornekprojeler;

import java.util.Random;
import java.util.Scanner;

    
public class MayinTarlasi {
    Scanner input =new Scanner (System.in);
        int rowNumber;
        int columnNumber;
        int map[][];
        int board[][];
        int size;
        boolean game = true;
        Random rand = new Random();

        MayinTarlasi(int rowNumber,int columnNumber){
                                                      
            this.columnNumber=columnNumber;
            this.rowNumber=rowNumber;
            this.map= new int[rowNumber][columnNumber];
            this.board= new int[rowNumber][columnNumber];
            this.size= rowNumber*columnNumber;
        }
        

public void run() {
    int row1,col1,success=0;
    prepareGame();
    printMap(map);
    System.out.println("oyun başladı!");
    while(game) {
    printMap(board);
    System.out.println("hangi kutuyu açmak istiyorsanız satır ve sütun değerlerini giriniz. ilk satır ve sütun 0,0 dır. )");
    System.out.println("sütun:");
    row1=input.nextInt();
    System.out.println("satır:");
    col1=input.nextInt();
    if(row1<0||row1>=rowNumber) {
        System.out.println("geçersiz koordinat girdiniz!");
        continue;
    }
    if(col1<0||col1>=columnNumber) {
        System.out.println("geçersiz koordinat girdiniz!");
        continue;
    }
    if(map[row1][col1]!=-1) {
        check(row1,col1); 
        success++;
        if(success== (size/4)) {
            System.out.println("başarılı!");
            break;
        }
    } else {
        game = false;
        System.out.println("GAME OVER!");
    }
break;
    }
}
public void check (int r, int c) {
    if(board[r][c]==0) { 
        
        if((c<columnNumber-1)&&map[r][c+1]==-1) {
            board [r][c]++;
        }
        if((r<columnNumber-1)&&map[r+1][c]==-1) {
            board [r][c]++;
        }
        if((c>0)&&map[r][c-1]==-1) {
            board [r][c]++;
        }
        if((r>0)&&map[r-1][c]==-1) {
            board [r][c]++;
        }
        if(board[r][c]==0) {
            board[r][c]= -2;
        }
            
    }
    
}
public void prepareGame() {
    int randRow, randCol,count=0;
    while (count!= (size/4)) {
        randRow= rand.nextInt(rowNumber);
        randCol= rand.nextInt(columnNumber);
        if (map[randRow][randCol]!= -1)
            map[randRow][randCol]=-1;
        count++;
        
    }
    
}
public void printMap(int[][]arr) {
    for (int i=0;i>arr.length;i++) {
        for (int j=0; j>arr[0].length;j++) {
            if(arr[i][j]>=0) {
                System.out.print(arr[i][j] + " ");
            }
            System.out.println(arr[i][j]+" ");
            
        }
        System.out.println();
    }
}
public  class Main {
    
public void main(String[]args) {
        Scanner input =new Scanner (System.in);
        int row,column;
                
        System.out.println("MAYIN TARLASI OYUNUNA HOŞGELDİNİZ!!");
        System.out.println("oyunda '-2' o kutuda  ve çevresinde bomba olmadığını ifade ediyor unutmayın.!");
        System.out.println("pozitif sayılar da o kutunun etrafında kaç tane bomba olduğunu ifade ediyor.!");
        System.out.println("Lütfen oynamak istediğiniz boyutları giriniz ör(satır:5,sutun:5  5x5dir.)");
        System.out.println("sütun sayısı:");
        row = input.nextInt();
        System.out.println("satır sayısı:");
        column=input.nextInt();
        MayinTarlasi mayin =new MayinTarlasi(row,column);
        mayin.run();
}   
}   
    
}
 

WindStone

Müdavim
Müdavim
Katılım
11 Nisan 2020
Mesajlar
5,083
Çözümler
8
Reaksiyon puanı
2,679
Puanları
1,358
Yaş
20
"MayinTarlasi mayin =new MayinTarlasi(row,column);"

bu kodun ne yaptığını anlayamadım açıklayabilir misiniz?

Java:
MayinTarlasi(row,column)
diyemezsiniz ki.
Java:
public class MayinTarlasi
Yerine
Java:
public class MayinTarlasi(row,column)
Tarzı bir şey olması lazım değil mi? Java da pek bilgim yok ama bildiğim çoğu dilde böyle.
 

EnDleSS12

Öğrenci
Katılım
18 Şubat 2023
Mesajlar
13
Reaksiyon puanı
5
Puanları
3
Yaş
20
"MayinTarlasi mayin =new MayinTarlasi(row,column);"

bu kodun ne yaptığını anlayamadım açıklayabilir misiniz?

Java:
MayinTarlasi(row,column)
diyemezsiniz ki.
Java:
public class MayinTarlasi
Yerine
Java:
public class MayinTarlasi(row,column)
Tarzı bir şey olması lazım değil mi? Java da pek bilgim yok ama bildiğim çoğu dilde böyle.
MayinTarlasi mayin =new MayinTarlasi(row,column);
bunu mayin nesnesini tanımlamak için yazdım.

public class MayinTarlasi(row,column)
bu şekilde tanımlanmıyor sınıflar javada bildiğim kadarıyla

Java:
MayinTarlasi(row,column)
neden böyle yazamıyorum ?
 

WindStone

Müdavim
Müdavim
Katılım
11 Nisan 2020
Mesajlar
5,083
Çözümler
8
Reaksiyon puanı
2,679
Puanları
1,358
Yaş
20
MayinTarlasi mayin =new MayinTarlasi(row,column);
bunu mayin nesnesini tanımlamak için yazdım.

public class MayinTarlasi(row,column)
bu şekilde tanımlanmıyor sınıflar javada bildiğim kadarıyla

Java:
MayinTarlasi(row,column)
neden böyle yazamıyorum ?
Eğer mayinTarlasi() nin içine hangi değerleri (int,string) alacağını yazmazsanız kod hata verir.
Java:
public class MayinTarlasi(int row,int col)
olarak denemeniz lazım.
 

EnDleSS12

Öğrenci
Katılım
18 Şubat 2023
Mesajlar
13
Reaksiyon puanı
5
Puanları
3
Yaş
20
Eğer mayinTarlasi() nin içine hangi değerleri (int,string) alacağını yazmazsanız kod hata verir.
Java:
public class MayinTarlasi(int row,int col)
olarak denemeniz lazım.
Java:
public class MayinTarlasi(int row,int col)
yazdığımda hata verdi ancak public class Main i başka bir dosyaya alarak o sorunu halletim.
Ama bu sefer de
Java:
printMap(map);
kısmı çalışmıyor sanki o kısım yazılmış gibi alt satırdan devam ediyor kod çalışmaya
 

xCode

Asistan
Katılım
17 Haziran 2015
Mesajlar
169
Reaksiyon puanı
38
Puanları
28
"MayinTarlasi mayin =new MayinTarlasi(row,column);"

bu kodun ne yaptığını anlayamadım açıklayabilir misiniz?

Java:
MayinTarlasi(row,column)
diyemezsiniz ki.
Java:
public class MayinTarlasi
Yerine
Java:
public class MayinTarlasi(row,column)
Tarzı bir şey olması lazım değil mi? Java da pek bilgim yok ama bildiğim çoğu dilde böyle.
chatgpt'ye sor daha ayrıntılı ve daha doğru cevaplar alırsın buradakine kıyasla
 

WindStone

Müdavim
Müdavim
Katılım
11 Nisan 2020
Mesajlar
5,083
Çözümler
8
Reaksiyon puanı
2,679
Puanları
1,358
Yaş
20
Java:
public class MayinTarlasi(int row,int col)
yazdığımda hata verdi ancak public class Main i başka bir dosyaya alarak o sorunu halletim.
Ama bu sefer de
Java:
printMap(map);
kısmı çalışmıyor sanki o kısım yazılmış gibi alt satırdan devam ediyor kod çalışmaya
Java:
MayinTarlasi(int rowNumber,int columnNumber){
                                                      
            this.columnNumber=columnNumber;
            this.rowNumber=rowNumber;
            this.map= new int[rowNumber][columnNumber];
            this.board= new int[rowNumber][columnNumber];
            this.size= rowNumber*columnNumber;
        }

kodun bu kısmını görmemişim. Neden MayinTarlasi adlı classtan iki tane var? belki sorun budur ?
 

EnDleSS12

Öğrenci
Katılım
18 Şubat 2023
Mesajlar
13
Reaksiyon puanı
5
Puanları
3
Yaş
20
Java:
MayinTarlasi(int rowNumber,int columnNumber){
                                                     
            this.columnNumber=columnNumber;
            this.rowNumber=rowNumber;
            this.map= new int[rowNumber][columnNumber];
            this.board= new int[rowNumber][columnNumber];
            this.size= rowNumber*columnNumber;
        }

kodun bu kısmını görmemişim. Neden MayinTarlasi adlı classtan iki tane var? belki sorun budur ?
chatgpt'ye sor daha ayrıntılı ve daha doğru cevaplar alırsın buradakine kıyasla
teşekkür ederim, deneyeceğim.
Mesaj otomatik birleştirildi:

Java:
MayinTarlasi(int rowNumber,int columnNumber){
                                                     
            this.columnNumber=columnNumber;
            this.rowNumber=rowNumber;
            this.map= new int[rowNumber][columnNumber];
            this.board= new int[rowNumber][columnNumber];
            this.size= rowNumber*columnNumber;
        }

kodun bu kısmını görmemişim. Neden MayinTarlasi adlı classtan iki tane var? belki sorun budur ?
Java:
MayinTarlasi(int rowNumber,int columnNumber)
bu kısım sınıf değil constructor yani bu constructor için yazılacak olan nesnelerin nasıl olacağını belirliyor yani mayınlar (int, int ) şekilde olacak demek
 

WindStone

Müdavim
Müdavim
Katılım
11 Nisan 2020
Mesajlar
5,083
Çözümler
8
Reaksiyon puanı
2,679
Puanları
1,358
Yaş
20
chatGPT nin değdiğine göre
Java:
for (int i=0;i>arr.length;i++) {
        for (int j=0; j>arr[0].length;j++) {
            if(arr[i][j]>=0) {
                System.out.print(arr[i][j] + " ");
            }
            System.out.println(arr[i][j]+" ");
            
        }
        System.out.println();
    }
bu kodda for döngülerinin içindeki küçüktür operatörü yanlış yazılmış. Yani i>arr.lenght değil, i<arr.lenght olmalıymış.
Mesaj otomatik birleştirildi:

1678111788968.png

chatGPT abimiz böyle söylemiş.
 

EnDleSS12

Öğrenci
Katılım
18 Şubat 2023
Mesajlar
13
Reaksiyon puanı
5
Puanları
3
Yaş
20
chatGPT nin değdiğine göre
Java:
for (int i=0;i>arr.length;i++) {
        for (int j=0; j>arr[0].length;j++) {
            if(arr[i][j]>=0) {
                System.out.print(arr[i][j] + " ");
            }
            System.out.println(arr[i][j]+" ");
           
        }
        System.out.println();
    }
bu kodda for döngülerinin içindeki küçüktür operatörü yanlış yazılmış. Yani i>arr.lenght değil, i<arr.lenght olmalıymış.
Mesaj otomatik birleştirildi:

Ekli dosyayı görüntüle 180013
chatGPT abimiz böyle söylemiş.
çok teşekkür ederim sorun çözüldü.
 
Üst