Dotcom Spiel - Dots Random setzen

Jagson

Mitglied
Hallöchen,

Ich möchte mir aktuell ein Dotcom Spiel programmieren, ohne GUI und nur Ein Dimensional.

Ich habe 2 Fragen:

Ich habe momentan extreme Probleme mit den Methoden in anderen Klassen. Ich arbeite momentan mit einem Buch (Java - Von Kopf bis Fuß), jedoch möchte ich nicht komplett wie im Buch programmieren sondern auch eigene Sachen hinzufügen oder eventuell Funktionen ändern.

Kommen wir erstmal zur Übersicht:

Ich möchte ein Dotcom Spiel errichten das beim start fragt ob man ein Spiel starten möchte oder nicht, wenn "Ja", soll eine Variable in der Klasse Feld angelegt werden. Anschließen wird gefragt wie groß das Feld sein soll. Dieser Wert wird dann in "setFeld" übergeben, dann möchte ich 3 Punkte Random aber hintereinander setzen (Also nicht kreuz und quer durch das Eindimensionale Feld)
Jedoch habe ich nun absolut keinen Plan wie ich diese Schiffe in der Methode setzen soll, vorallem hab ich keinen Plan wie der Befehl für den Random Schiffe vergeben lautet.

Der Code in der Klasse Feld.java ist größtenteils wahrscheinlich noch falsch, jedoch waren das mal Ideen die ich versucht hab umzusetzen.

Hier mal der Code den ich bisher geschrieben habe:

Main Dotcom Klasse:
Java:
package dotcom;

import java.util.*;
public class Dotcom {

    
    public static void main(String[] args) {
        Scanner scn = new Scanner(System.in);
        String Eingabe = "";
        int Feldgroeße = 0;
        System.out.println("Möchten sie das Spiel starten? Ja oder Nein!");
        
        Eingabe = scn.nextLine();
        
        if ( "Ja".equals(Eingabe)){
            Feld feld1 = new Feld();
            
            System.out.println("Wir groß soll ihr Spielfeld sein?");
            feld1.setFeld(scn.nextInt());
            
            
            System.out.println(feld1.getFeld());
        
        } else {
            System.exit(0);
        }
    }
}

Feld Generieren Klasse:
Java:
package dotcom;


public class Feld {
    private int groeße;
    private int Schiffe;
    
    int [] Feld = new int[groeße];
    
    public  void setFeld(int pgroeße){
        groeße = pgroeße;
    }
    
    public int getFeld(){
        return(Feld[groeße]);
    }
    
    public void setSchiffe(int pSchiffe){
        Schiffe = pSchiffe;
    }
    
    public int getSchiffe(){
        Feld[0] = 1;
        Feld[1] = 1;
        Feld[2] = 1;
        
        return(Feld[groeße]);
    }
}

Ich weiß das ich bei meiner Feld Generierungs Klasse irgendwo einen Denk Fehler habe!
 

njans

Top Contributor
Nun ich wundere mich, was du da versuchst abzubilden.
Java:
private 
    int groeße; // Größe des Feldes
    private int Schiffe; // Anzahl Schiffe
    int [] Feld = new int[groeße]; // Wo die Schiffe genau sind

Fehler in deinem Programm:
Java:
int [] Feld = new int[groeße]; // Das solltest du nicht machen.
Zu dem Zeitpunkt, wo du es machst, ist größe 0. Deswegen mach die Zuweisung lieber im Konstruktor!

Die Größe des Feldes kannst du doch über Feld.length abrufen (nebenbei: Variablen schreibt man am Anfang immer klein, also feld).
Java:
public void setSchiffe(int pSchiffe){
        Schiffe = pSchiffe;
    }
Die Methode müsste entweder ein int Araay erhalten, damit du die Schiffe auch setzten kannst, oder aber einen index, damit du an der Stelle ein Schiff setzten kannst.
 

Jagson

Mitglied
Ich hab nun noch ein getFeld in die Klasse Feld eingebaut

Java:
public int getFeld(){
        return(groeße);

Anschließend hab ich in der Main Klasse ein Array erstellt:

Java:
if ( "Ja".equals(Eingabe)){
            Feld feld1 = new Feld();
            
            System.out.println("Wir groß soll ihr Spielfeld sein?");
            feld1.setFeld(scn.nextInt());
            
            int [] feld = new int[feld1.getFeld()];
            
            
            System.out.println(feld1.getFeld());

Jetzt möchte ich aber in diesem Array Feld 1 Schiff mit 3Dots setzen, also 3 Punkten zum abschießen. Wie soll ich diese nun am besten in das Feld Arrays hereinsetzen? Ich möchte diese 3 Punkte Zufällig auf dem Feld platzieren.
 
Zuletzt bearbeitet:

HimBromBeere

Top Contributor
dann möchte ich 3 Punkte Random aber hintereinander setzen (Also nicht kreuz und quer durch das Eindimensionale Feld)
Erstell dir eine Instanz von Random und erzeuge dann über
Code:
Random#nextInt(n - 1)
eine Zufallszahl zwischen 0 (inklusive) und der Anzahl an Elementen n - 1 (exklusive); oder kürzer: [0, n - 2]

Also sowas:
Java:
Random r = new Random();
int groesse = ... // Eingabe der Feldgröße
int start = r.nextInt(groesse - 1);
feld(start) = 1; // 1 steht hier symbolisch für Schiff an dieser Stelle
feld(start + 1) = 1; // fülle das erste Feld hinter dem Startfeld mit einem Schiffsteil
feld(start + 2) = 1; // fülle das zweite Feld hinter dem Startfeld mit einem Schiffsteil
 
Zuletzt bearbeitet:

Jagson

Mitglied
Ich hab noch extra was hinzugefügt

Ich hatte oft eine Fehlermeldung das die Array zu ende wäre und man nicht vorhandene Felder nicht ändern kann.

Also hab ich den Code so geschrieben:

Java:
int [] feld = new int[feld1.getFeld()];
            int groeße = feld1.getFeld();
            int start = r.nextInt(groeße - 1);
            
            if((start + 3) > groeße){
                
            feld[start] = 1;
            feld[start - 1] = 1;
            feld[start - 2] = 1;
            
            } else {
            
            feld[start] = 1;
            feld[start + 1] = 1;
            feld[start + 2] = 1;
            
            }

Somit habe ich nun immer unterschiedliche Schiffspositionen :)
 

Jagson

Mitglied
Mittlerweile bin ich fertig mit meinem Code, so sieht er nun aus:

Dotcom Main Klasse:

Java:
package dotcom;

import java.util.*;

public class Dotcom {

    public static void main(String[] args) {
        Scanner scn = new Scanner(System.in);
        String Eingabe = "";
        Random r = new Random();
        int tipp = 0;
        boolean schiffevorhanden = true;

        System.out.println("Möchten sie das Spiel starten? Ja oder Nein!");

        Eingabe = scn.nextLine();

        if ("Ja".equals(Eingabe)) {
            Feld feld1 = new Feld();

            System.out.println("Wir groß soll ihr Spielfeld sein?");
            feld1.setFeld(scn.nextInt());

            int[] feld = new int[feld1.getFeld()];
            int groeße = feld1.getFeld();
            int start = r.nextInt(groeße - 1);

            if ((start + 3) > groeße) {

                feld[start] = 1;
                feld[start - 1] = 1;
                feld[start - 2] = 1;

            } else {

                feld[start] = 1;
                feld[start + 1] = 1;
                feld[start + 2] = 1;

            }


            int getroffen = 0;
            int versucht  = 0;

            while (schiffevorhanden == true) {
                if (getroffen != 3) {
                    System.out.println("Rate wo ein Schiffsteil verboren sein könnte!");
                    tipp = scn.nextInt();

                    if (feld[tipp] == 1) {
                        System.out.println("Getroffen!");
                        getroffen++;
                        versucht++;
                    } else {
                        System.out.println("Leider nicht getroffen!");
                        versucht++;
                    }

                } else {
                    schiffevorhanden = false;
                }
            }
            System.out.println("Alle Schiffe wurden versenkt! Du hast " + versucht + " Versuche gebraucht!");
            
        } else {
            System.exit(0);
        }
        System.exit(0);

    }
}

Feld Klasse:

Java:
package dotcom;


public class Feld {
    private int groeße;
    
    
    public  void setFeld(int pgroeße){
        groeße = pgroeße;
    }
    
    public int getFeld(){
        return(groeße);
    }
    
}

Danke an alle die geholfen haben! Ich würde mich noch freuen wenn ihr kurz die Sachen anschauen würdet und mir eventuell ein paar Tipps geben könntet, was man verbessern sollte/könnte.
 

HimBromBeere

Top Contributor
Java:
int groeße = feld1.getFeld();
if((start + 3) > groeße){
    feld[start] = 1;
    feld[start - 1] = 1;
    feld[start - 2] = 1;
            
} else {
            
    feld[start] = 1;
    feld[start + 1] = 1;
    feld[start + 2] = 1;
}
Das sieht wahrlich ziemlich doof aus. Hab´s nochmal durchgerechnet, du musst die Zufallszahl natürlich für den Bereich [0; n - 2[ setzen (oder halt [0; n -3], was ja das Selbe ist), um in keine ArrayOutOfBoundsExeption zu rennen. Sprich:
Java:
start = r.nextInt(groesse - 2);
Achja, eine kleine Sache noch: dass du das Ö durch oe ersetzt hast, ist ja schonmal löblich, aber ß ist auch nicht wirklich gut innerhalb von Namen.

[EDIT]Wofür soll eigtl. die Abfrage am Anfang gut sein, ob man das Spiel wirklich starten möchte? Wird ja wohl kaum jemand aus Versehen dein Programm starten, oder?

Java:
while (schiffevorhanden == true)
Das geht übrigens auch kürzer:
Java:
while (schiffevorhanden) {
, weil schiffeVorhanden bereits ein Wahrheitswert ist.
[/EDIT]
 
Zuletzt bearbeitet:

Jagson

Mitglied
Okay, ich werd die If Abfrage nochmal ändern und einfach aus dem -1 ein -2 oder -3 machen.

Die Abfrage am Anfang ist einfach nur eine kleine Spielerei :)

Das mit dem "ß" werde ich mir merken! :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F DotCom Tippspiel Java Basics - Anfänger-Themen 14
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
I Threads Spiel gol Java Basics - Anfänger-Themen 6
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
J ArrayList vergleichen im spiel Mastermind Java Basics - Anfänger-Themen 2
enesss tictactoe spiel Java Basics - Anfänger-Themen 5
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
Jxhnny.lpz TicTacToe Spiel vs Computer. (Probleme) Java Basics - Anfänger-Themen 7
httprt Probleme bei dem erstellen von leveln in meinem Spiel Java Basics - Anfänger-Themen 2
berserkerdq2 Habe ein Spiel entwickelt, dass immer in der 4 Runde einen cast-Fehler erhält Java Basics - Anfänger-Themen 3
berserkerdq2 Spiel hängt sich immer in der 4 Runde auf, obwohl ich jede Runde das gleiche mache Java Basics - Anfänger-Themen 1
Ekooekoo Hilfe spiel Java Basics - Anfänger-Themen 5
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
Kennewick Basketball Spiel Ergebnisse Java Basics - Anfänger-Themen 11
X Erste Schritte Hilfe bei einem kleinen Spiel. Java Basics - Anfänger-Themen 19
D Snake-Spiel ähnliche Aufgabe Hilfe Java Basics - Anfänger-Themen 3
R Hangman-Spiel-zufälliges Wort ermitteln Java Basics - Anfänger-Themen 4
JEP1 Java Dialog Fenster schließen Spiel Java Basics - Anfänger-Themen 0
I Simples Risiko-Spiel Java Basics - Anfänger-Themen 5
Hallolu Pong-Spiel: Schläger schneller werden lassen Java Basics - Anfänger-Themen 9
M Java Spiel wie Wer wird Millionär Java Basics - Anfänger-Themen 1
T Startbildschirm für ein Spiel erstellen Java Basics - Anfänger-Themen 0
Z Kein überprüfen des gesamten Arrays möglich.(Viergewinnt Spiel) Java Basics - Anfänger-Themen 6
G Ufo Spiel programmieren Java Basics - Anfänger-Themen 13
C Java Spiel Java Basics - Anfänger-Themen 3
J Spiel programmieren Java Basics - Anfänger-Themen 16
S Spiel-Programmieren. Wenn ein Objekt den anderen berührt. Java Basics - Anfänger-Themen 6
B Memory Spiel Java Basics - Anfänger-Themen 29
J Memory-Spiel Aktivierung der Methode mit Timer Java Basics - Anfänger-Themen 44
Kamy Ein einfaches "Vier Gewinnt" Spiel für Anfängerin Java Basics - Anfänger-Themen 51
A Breakout-Spiel , Ball mit Platten abprallen lassen Java Basics - Anfänger-Themen 1
S Spiel programmieren mit Java Java Basics - Anfänger-Themen 11
Olis Erste Schritte Simples Memory Spiel möglich? Java Basics - Anfänger-Themen 1
J Spiel mit Button klick starten Java Basics - Anfänger-Themen 9
C Rekursives Backtracking beim Spiel Peg Java Basics - Anfänger-Themen 22
M Spiel programmieren Java Basics - Anfänger-Themen 16
Spencer Reid Feedback zu kleinem Spiel Java Basics - Anfänger-Themen 4
kokojamboo92 Spiel programmieren Java Basics - Anfänger-Themen 1
R Kleines Java Spiel funktioniert nicht. Java Basics - Anfänger-Themen 2
I Spiel Java Basics - Anfänger-Themen 34
H ein einfaches Tic Tac Toe Spiel Java Basics - Anfänger-Themen 1
I Spiel programmieren. Java Basics - Anfänger-Themen 16
B Hilfe bei Escape - Spiel Java Basics - Anfänger-Themen 6
S Java-Spiel Java Basics - Anfänger-Themen 2
M Nim-Spiel geht in den negativen Bereich Java Basics - Anfänger-Themen 1
K Klassen Registrierungsseite für ein Spiel Java Basics - Anfänger-Themen 6
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 3
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 2
M Brauche Tipps für ein Spiel Java Basics - Anfänger-Themen 4
S Probleme mit GamGrid Spiel-Erstellung => Actor reagiert nicht auf Tastatur Java Basics - Anfänger-Themen 2
Mxxxt Mosaik Spiel - Steuerpanel wird nicht angezeigt Java Basics - Anfänger-Themen 5
M Erste Schritte Zufallszahl Spiel Problem Java Basics - Anfänger-Themen 7
Z Erste Schritte Kleines 2D. Spiel Objekt Bewegung funktioniert nicht Java Basics - Anfänger-Themen 2
H Spiel Kniffel: Gesamtes Array untersuchen. Java Basics - Anfänger-Themen 15
Tacofan Hangman als fertiges Spiel Java Basics - Anfänger-Themen 7
M Array und Objektorientierung? - TicTacToe Spiel Java Basics - Anfänger-Themen 43
C Klassen Sudoku-Spiel Werte werden nicht gesetzt Java Basics - Anfänger-Themen 4
K Kleines Spiel auf Java programmieren Java Basics - Anfänger-Themen 2
W Tic Tac Toe Spiel ohne Arrays Java Basics - Anfänger-Themen 7
S Im objektorientiertem "Spiel" kämpfen Java Basics - Anfänger-Themen 3
I Klassen Umsetzungsfrage zu Spiel "Zuul" Java Basics - Anfänger-Themen 3
F Mastermind Spiel Java Basics - Anfänger-Themen 9
H Liste ausgeben (Spiel Hey Fisch (software-challenge) ändern Anzahl Fische) Java Basics - Anfänger-Themen 1
F Game-Engine für textbasierendes Spiel: Architektur? Java Basics - Anfänger-Themen 9
K Erste Schritte Frage Antwort Spiel - Fragen zur Planung Java Basics - Anfänger-Themen 2
J Java Spiel Zufallsauswahl für Zugbeginn Java Basics - Anfänger-Themen 3
J Frage Antwort Spiel - Wie Zeitcountdown realisieren? Java Basics - Anfänger-Themen 2
L Erste Schritte Spiel: Glückliches Sieben Java Basics - Anfänger-Themen 3
T Hangman spiel Java Basics - Anfänger-Themen 5
J 2 Pc's - Spiel gegeneinander ?! Java Basics - Anfänger-Themen 3
V Spiel Programmieren Java Basics - Anfänger-Themen 9
P 2D-Spiel und Bildschirmgröße Java Basics - Anfänger-Themen 2
O Methoden Fehlermeldung(Illegal start of expression) bei 4-Gewinnt-Spiel Java Basics - Anfänger-Themen 5
T Blöcke für ein Jump and Run Spiel Java Basics - Anfänger-Themen 8
S 2D-Spiel mit Threads... Java Basics - Anfänger-Themen 3
S 2D-Spiel im Vollbild an größe anpassen? Java Basics - Anfänger-Themen 3
M hangman spiel Java Basics - Anfänger-Themen 1
K JTextField in ein Spiel einfügen Java Basics - Anfänger-Themen 2
S Mosaik Spiel Java Basics - Anfänger-Themen 19
pinar memory spiel Java Basics - Anfänger-Themen 10
T OOP Mein erstes Java-Spiel - Schiffe versenken! Java Basics - Anfänger-Themen 2
K Erste Schritte Wie mache ich weiter? (Spiel-Menü) Java Basics - Anfänger-Themen 9
C Java Applet in html. Pong - old school Spiel Java Basics - Anfänger-Themen 10
J Variablen Invalid Character - Error -> Spiel mit Variablenergebnissen Java Basics - Anfänger-Themen 8
K Schere Stein Papier Spiel Java Basics - Anfänger-Themen 3
A Feedback zum Spiel Java Basics - Anfänger-Themen 5
F Hilfe bei meinem Spiel Java Basics - Anfänger-Themen 3
C Lotto Spiel Java Basics - Anfänger-Themen 23
Dogge Farben-Spiel Java Basics - Anfänger-Themen 20
K Diverse Bugs in einem Snake Spiel Java Basics - Anfänger-Themen 4
2 Lotto-Spiel Java Basics - Anfänger-Themen 9
X Datentypen Probleme mit Char bei meinem 1. Spiel Java Basics - Anfänger-Themen 20
D Erste Schritte Einstieg in die Java Spiel Programmierung Java Basics - Anfänger-Themen 7
H kleines Spiel [Processing] Java Basics - Anfänger-Themen 7
P NullPointerException in Memory-Spiel Java Basics - Anfänger-Themen 5
R Server/Client für Spiel Java Basics - Anfänger-Themen 2
K Hilfe, komme nicht weiter in meinem JAVA-Spiel Java Basics - Anfänger-Themen 3
J Programm(Spiel) neustarten Java Basics - Anfänger-Themen 8
M Suche Beispiel-Spiel Java Basics - Anfänger-Themen 3
C Java Nullpointer Exception in 2D-Spiel Snake Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben