Mein Programm lässt sich nicht Starten

x-tshainge

Mitglied
Hallo ich habe ein einfachen Minesweeper geschrieben und finde auch im Code keine Fehlermeldung, das Problem jedoch ist, dass es sich nicht Starten lässt. Hier der Code
Java:
package main;

public class Main {

    Game game = new Game();
   
}

Java:
package main;

public class Game {

     private Board board;
        boolean finish = false;
        boolean win = false;
        int turn=0;
       
        public void Jogo(){
            board = new Board();
            Play(board);
        }
       
        public void Play(Board board){
            do{
                turn++;
                System.out.println("Turn "+turn);
                board.show();
                finish = board.setPosition();
               
                if(!finish){
                    board.openNeighbors();
                    finish = board.win();
                }
               
            }while(!finish);
           
            if(board.win()){
                System.out.println("Congratulations, you let the 10 fields with the mines in "+turn+" turns");
                board.showMines();
            } else {
                System.out.println("Mine! You lost!");
                board.showMines();
            }
        }
    }

Java:
package main;

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

public class Board {
    private int[][] mines;
    private char[][] boardgame;
    private int Line, Column;
    Random random = new Random();
    Scanner input = new Scanner(System.in);
   
    public Board (){
        mines = new int[10][10];
        boardgame = new char[10][10];
        startMines();
        randomMines();
        fillTips();
        startBoard();
       
    }
   
    public boolean win(){
        int count=0;
        for(int line = 1 ; line < 9 ; line++)
            for(int column = 1 ; column < 9 ; column++)
                if(boardgame[line][column]=='_')
                    count++;
        if(count == 10)
            return true;
        else
            return false;               
    }
   
    public void openNeighbors(){
        for(int i=-1 ; i<2 ; i++)
            for(int j=-1 ; j<2 ; j++)
                if( (mines[Line+i][Column+j] != -1) && (Line != 0 && Line != 9 && Column != 0 && Column != 9) )
                    boardgame[Line+i][Column+j]=Character.forDigit(mines[Line+i][Column+j], 10);
       
    }
   
    public int getPosition(int Line, int Column){
        return mines[Line][Column];
    }
   
    public boolean setPosition(){
           
            do{
                System.out.print("\nLine: ");
                Line = input.nextInt();
                System.out.print("Column: ");
                Column = input.nextInt();
               
                if( (boardgame[Line][Column] != '_') && ((Line < 9 && Line > 0) && (Column < 9 && Column > 0)))
                    System.out.println("Field already shown");
               
                if( Line < 1 || Line > 8 || Column < 1 || Column > 8)
                    System.out.println("Choose a number between 1 and 8");
               
            }while((Line < 1 || Line > 8 || Column < 1 || Column > 8) || (boardgame[Line][Column] != '_') );
           
            if(getPosition(Line, Column)== -1)
                return true;
            else
                return false;
           
    }
   
    public void show(){
        System.out.println("\n     Lines");
        for(int Line = 8 ; Line > 0 ; Line--){
            System.out.print("       "+Line + " ");
           
            for(int Column = 1 ; Column < 9 ; Column++){
                    System.out.print("   "+ boardgame[Line][Column]);
            }
               
            System.out.println();
        }
           
        System.out.println("\n            1   2   3   4   5   6   7   8");
        System.out.println("                      Columns");
       
    }
   
    public void fillTips(){
        for(int line=1 ; line < 9 ; line++)
            for(int column=1 ; column < 9 ; column++){
               
                    for(int i=-1 ; i<=1 ; i++)
                        for(int j=-1 ; j<=1 ; j++)
                            if(mines[line][column] != -1)
                                if(mines[line+i][column+j] == -1)
                                    mines[line][column]++;
               
            }
           
    }
   
    public void showMines(){
        for(int i=1 ; i < 9; i++)
            for(int j=1 ; j < 9 ; j++)
                if(mines[i][j] == -1)
                    boardgame[i][j]='*';
       
        show();
    }
   
    public void startBoard(){
        for(int i=1 ; i<mines.length ; i++)
            for(int j=1 ; j<mines.length ; j++)
                boardgame[i][j]= '_';
    }
   
    public void startMines(){
        for(int i=0 ; i<mines.length ; i++)
            for(int j=0 ; j<mines.length ; j++)
                mines[i][j]=0;
    }
   
    public void randomMines(){
        boolean raffled;
        int Line, Column;
        for(int i=0 ; i<10 ; i++){
           
            do{
                Line = random.nextInt(8) + 1;
                Column = random.nextInt(8) + 1;
               
                if(mines[Line][Column] == -1)
                    raffled=true;
                else
                    raffled = false;
            }while(raffled);
           
            mines[Line][Column] = -1;
        }
    }
}
 
Richtig, ist mir auch gerade aufgefallen 😉

Schmeiß am besten dein package 'main' und die Klasse 'Main' raus!
Es ist nie gut, eine eigene Klasse wie ein Java-Schlüsselwort zu benennen!!

Nenn Dein Projekt von mir aus 'Game' (auch wenn das ebenfalls kein guter Name ist) und spendier ihm dann die erwähnte 'public static void main(...)'-Methode!

Falls Dir das alles nichts sagt, hier mal ein paar Links zu den Grundlagen:
http://www.maik-ludwig.de/info/programmierung2/aufbau/aufbau.html
http://www.straub.as/java/basic/progaufbau.html

VG Klaus
 
<terminated, exit value: 0>C:\Program Files\Java\jre8\bin\javaw.exe (06.04.2018, 11:41:04)
Sobald ich das Programm Starte sehe ich diese zeile in meiner Konsole nichts weiteres
 
Lies dir die Links von Vfl_Freak durch!
Beim Aufruf einer Applikation wird die Klasse nach der Methode main durchsucht. Die darin enthaltenden Anweisungen werden ausgeführt.

Nenn deine Hauptklasse z.B. MineSweeper und füge die mehrfach erwähnte Methode "main" hinzu. Darin kannst du deine weiteren Klassen instantiieren und Methoden aufrufen.
 

Zurück
Oben