Schachbrett Spiel Nr. 01

Pazago

Mitglied
Guten Abend,

Ich sitzte nun schon seit..... ZU LANGE an dieser einen Aufgabe:

Gegeben ist ein Schachbrett mit 64 Feldern (8x8). Auf dem ersten Feld liegt ein Korn, auf den zweiten liegen 2, auf dem dritten 4 auf dem vierten 8 usw. Auf welchem Feld liegt das Korn Nr. 100 000? Ab welchem Feld liegen mehr als 1.000.000 Körner auf dem Brett?


Dies soll mit einer Grafischen Benutzer Oberfläche und mit Hilfe der do und while Schleife gelöst werden.


Ich habe mir gedach das ich versuche eine Variabele für das Feld und eine für das Korn zu machen doch wie sag ich Java jetzt das er bei jedem Feld verdoppeln soll ???:L


Hier mein Quell Text:

Java:
int Feld, Korn ;

 Feld = Math.random()*1;

  nFZahl = Korn ;
  
    do {

    Feld = Feld++ + Feld++ ;


    }

    while (nFZahl==Feld) ;
  }

Erklärung:
Bei
Java:
Feld = Feld 1 ;
will ich Feld auf die Zahl eins setzten wobei ich da mir ziemlich sicher bin das es Falsch ist :oops:

nFZahl ist die Zahl die der Benutzter Eingibt

Java:
 Feld = Feld++ + Feld++ ;
Der Versuch es zu verdoppeln da ich immer wieder neue Erros bekomme weiß ich nicht ob das so geht ;(


Wäre super wenn Ihr mir helfen könntet :)


LG Pazago
 

Pazago

Mitglied
ich habs jetzt geändert nur hat java jetzt anscheinend ein Problem mit dem Feld wo der Benutzer die Zahl rein schreiben muss:

Fehler Meldung

Java:
Schachbrett.java:73:12: incompatible types
found   : int
required: NumberField
  nFZahl = Korn ;
           ^
Schachbrett.java:82:18: incomparable types: NumberField and int
    while (nFZahl==Feld) ;
                 ^
2 errors
 

Pazago

Mitglied
Ich hab mal alles kopiert nicht nur den Knopf


Java:
import java.awt.*;
import java.awt.event.*;

/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 05.05.2011
  * @author
  */

public class Schachbrett extends Frame {
  // Anfang Attribute
  private Label laUeberschrift = new Label();
  private NumberField nFZahl = new NumberField();
  private Label laZahlfeld1 = new Label();
  private TextArea textArea1 = new TextArea("", 1, 1, TextArea.SCROLLBARS_NONE);
  private Button buBerechnen = new Button();
  // Ende Attribute

  public Schachbrett(String title) {
    // Frame-Initialisierung
    super(title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { dispose(); }
    });
    int frameWidth = 476;
    int frameHeight = 433;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    Panel cp = new Panel(null);
    add(cp);
    // Anfang Komponenten

    laUeberschrift.setBounds(24, 16, 118, 16);
    laUeberschrift.setText("Schachbrett Spiel:");
    laUeberschrift.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(laUeberschrift);
    nFZahl.setBounds(32, 168, 89, 24);
    nFZahl.setText("");
    cp.add(nFZahl);
    laZahlfeld1.setBounds(24, 112, 190, 16);
    laZahlfeld1.setText("Gib die Nummer vom Korn ein:");
    laZahlfeld1.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(laZahlfeld1);
    textArea1.setBounds(256, 32, 193, 313);
    textArea1.setText("Das Schachbrett Spiel ist ein Spiel das aus einem Schachbrett \nmit 64 Feldern besteht (8x8).\n\nGebe einfach deine Gewünschte Nummer ein und du erhälst die\nFeld Anzahl wo das Korn mit deiner eingegebenen Nummer drauf liegt\nwenn du auf den Feld Berechnen Button drückst.\n\nViel Spaß :)");
    cp.add(textArea1);
    buBerechnen.setBounds(48, 248, 75, 25);
    buBerechnen.setLabel("Berechnen");
    buBerechnen.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        buBerechnen_ActionPerformed(evt);
      }
    });
    cp.add(buBerechnen);
    // Ende Komponenten

    setResizable(false);
    setVisible(true);
  }

  // Anfang Methoden
  public void buBerechnen_ActionPerformed(ActionEvent evt) {

  int Feld, Korn ;

  Feld = 1;

  nFZahl = Korn ;
  
    do {

    Feld = Feld * 2  ;


    }

    while (nFZahl==Feld) ;
  }

  // Ende Methoden

  public static void main(String[] args) {
    new Schachbrett("Schachbrett");
  }
}
 

Pazago

Mitglied
stimmt.... wie muss ich das dann schreiben wenn ich wissen will auf welchem Feld welches Korn liegt kann mir daraus keinen Reim machen :(
 

Pazago

Mitglied
jetzt hätte ich einen Fehler weniger bleibt nur noch einer :D

Quelltext:

Java:
public void buBerechnen_ActionPerformed(ActionEvent evt) {

  int Feld, Korn ;

  Feld = 1;

  nFZahl = Korn ;
  
    do {

    Feld = Feld * 2  ;


    }

    while (Korn==Feld) ;
  }

Fehler:

Java:
Schachbrett.java:73:12: incompatible types
found   : int
required: NumberField
  nFZahl = Korn ;
           ^
1 error

Könnte es daran liegen das ich Korn nicht mit einer Zahl deklariert habe???:L???:L
 

W9ND3R

Aktives Mitglied
Du hast hier einfach zwei verschiedene Datentypen, wie Final_Striker oben schon sagt vergleichst du Äpfel mit Birnen ... In diesem Fall ist es eben eine Zuweisung! Das geht auch nicht mit verschiedenen Datentypen ...
Java:
int Feld, Korn;
private NumberField nFZahl = new NumberField();
 
F

Firephoenix

Gast
Hi,
beovor du das ganze in Java runterschreibst, versuch es doch wenigstens erstmal als Pseudocode zu schreiben, dadurch wird dir das Lösen um Welten leichter fallen.

Wenn das ganze Graphisch angezeigt werden soll (evtl als 8*8 Schachbrett auf dem jeweils als Zahl auf jedem Feld die Körner angezeigt werden), macht es unter umständen sogar Sinn die Felder einzeln zu speichern.
Was macht das Feld aus? Die Position und die Anzahl der Körner.
Pack also alle Felder in ein int-Array mit 64 Feldern und du hast schonmal eine passende Datenstruktur.

Willst du Körner auf ein Feld packen musst du wissen wieviele Körner auf ein Feld passen:
Feld nummer n, Körner die auf Feld n passen, 2^n-1 (2 hoch (n-1))
1,1,1
2,2,2
3,4,4
4,8,8
...
Fällt dir was auf? :) Die Anzahl Körner die auf ein Feld passen kann man mathematisch bestimmen.

Wie könntest du jetzt bestimmen auf welchem Feld dein gesuchtes Korn ist und wieviel Körner auf den Feldern landen?

Eine Möglichkeit:
Setze dir einen Kornvorrat (z.B. 10)
Dann gehst du die Felder durch. Bei jedem Feld holst du solange Körner vom Vorrat auf das Feld bis das Feld voll ist oder der Vorrat leer. (Oder du machst es ohne Vorrat und zählst mit wieviele Körner du hingelegt hast).
Sobald du deinen Vorrat von n Körnern hingelegt hast (oder das n-te Korn legst bei der anderen Version) liegt auf dem Feld bei dem du gerade bist das gesuchte Korn.
Für mich sieht das nach 2 Schleifen aus, eine Möglichkeit mit do-while gibt es aber auch ;)
Gruß
 

Pazago

Mitglied
Ich hab es nun von meiner Idee um gebaut so das ich die Korn Anzahl vor gebe dabei ist nun das raus gekommen :

Java:
public void buBerechnen_ActionPerformed(ActionEvent evt) {

  int Feld, Korn ;

  Feld = 1;

  Korn = 100000 ;
  
    do {

    Feld = Feld * 2  ;


    }

    while (Korn==Feld) ;
    System.out.println
    (Feld) ;
  }

Es funktioniert auch ohne Fehler :D
nur kommt als Ergebniss immer egal wie hoch die zahl ist 2 raus???:L
liegt es an der Rechnung oder an dem was ich Ausgebe? wenn es an der Ausgabe liegt was muss ich da rein schreiben???:L???:L

Hab es schon mit allen was mir so spontan eingefallen ist Versucht Feld * 2, Feld++, und das alles mal kombienert wurde um so mehr es war immer zwei mehr :noe:
 
Zuletzt bearbeitet:

JAVAnnik

Bekanntes Mitglied
du wiedeholst die do-while-Schleife solange Korn=Feld wenn dann musst du schreiben while(Korn!=Feld) da aber in deiner schleife nie 100000 rauskommen wird wenn du immer mal 2 nimmst musst du schreiben while(Korn>Feld) nun brauchst du noch eine Variable die die Durchläufe der schleife zählt auf diesem Feld wird dann das 100000te Korn liegen

aufs 2d-array überträgst du das folgendermaßen dabei ist enspricht 'anzahl' den Durchläufen.
das korn liegt auf dem Feld mit der x Koordinate (anzahl%8) und auf der y Koordinate (anzahl/8)
 
Zuletzt bearbeitet:
O

oijmmuz

Gast
Java:
public class SchachbrettKorn {
	public static void main(String[] args) {
		long gesuchtesKorn = 100000L;
		int brettGroesse = 8*8;
		long anzahlKoerner = 1L;
		int anzahlDurchlaeufe = 1;	
		
		while (anzahlKoerner < gesuchtesKorn && anzahlDurchlaeufe <= brettGroesse) {
			anzahlKoerner = anzahlKoerner *2;
			anzahlDurchlaeufe++;
		}
		
		int feldNr;
		String feldStr="";
		
		if (anzahlDurchlaeufe % 8 == 0) {
			feldNr = 8;
			
			if (anzahlDurchlaeufe / 8 == 1) {
				feldStr = "A";
			} else if (anzahlDurchlaeufe / 8 == 2) {
				feldStr = "B";
			} else if (anzahlDurchlaeufe / 8 == 3) {
				feldStr = "C";
			} else if (anzahlDurchlaeufe / 8 == 4) {
				feldStr = "D";
			} else if (anzahlDurchlaeufe / 8 == 5) {
				feldStr = "E";
			} else if (anzahlDurchlaeufe / 8 == 6) {
				feldStr = "F";
			} else if (anzahlDurchlaeufe / 8 == 7) {
				feldStr = "G";
			}
		} else {
			feldNr = anzahlDurchlaeufe % 8;
			
			if (anzahlDurchlaeufe / 8 == 0) {
				feldStr = "A";
			} else if (anzahlDurchlaeufe / 8 == 1) {
				feldStr = "B";
			} else if (anzahlDurchlaeufe / 8 == 2) {
				feldStr = "C";
			} else if (anzahlDurchlaeufe / 8 == 3) {
				feldStr = "D";
			} else if (anzahlDurchlaeufe / 8 == 4) {
				feldStr = "E";
			} else if (anzahlDurchlaeufe / 8 == 5) {
				feldStr = "F";
			} else if (anzahlDurchlaeufe / 8 == 6) {
				feldStr = "G";
			} else if (anzahlDurchlaeufe / 8 == 7) {
				feldStr = "H";
			}
		}
		
		if (gesuchtesKorn <= anzahlKoerner) {
			System.out.println("Es liegen " +anzahlKoerner+ " Körner (inkl. des gesuchten Korns "+gesuchtesKorn+") auf Feld "+feldStr+feldNr+".");
		} else {
			System.out.println("Das Spielfeld ist zu klein oder die Anzahl der gesuchten Körner zu groß.");
		}
	}
}
 
O

oijmmuz

Gast
Bissle verkürzt:

Java:
public class SchachbrettKorn {
	public static void main(String[] args) {
		long gesuchtesKorn = 100000L;
		int brettBreite = 8;
		int brettHoehe = 8;
		long anzahlKoerner = 1L;
		int anzahlDurchlaeufe = 1;	
		
		while (anzahlKoerner < gesuchtesKorn && anzahlDurchlaeufe <= brettBreite * brettHoehe) {
			anzahlKoerner = anzahlKoerner *2;
			anzahlDurchlaeufe++;
		}
		
		String[] feldStr = new String[] {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
		
		if (gesuchtesKorn <= anzahlKoerner) {
			if (anzahlDurchlaeufe % brettBreite == 0) {		
				System.out.println("Es liegen " +anzahlKoerner+ " Körner (inkl. des gesuchten Korns "+gesuchtesKorn+") auf Feld "+feldStr[anzahlDurchlaeufe / brettBreite + 1]+brettBreite+".");
			} else {	
				System.out.println("Es liegen " +anzahlKoerner+ " Körner (inkl. des gesuchten Korns "+gesuchtesKorn+") auf Feld "+feldStr[anzahlDurchlaeufe / brettBreite]+anzahlDurchlaeufe % brettBreite+".");
			}
		} else {
			System.out.println("Das Spielfeld ist zu klein bzw. die Anzahl der gesuchten Körner zu groß.");
		}
	}
}
 

Marco13

Top Contributor
Sowas müßte auch gehen
Java:
    private static int fieldWithAtLeast(long n)
    {
        return (int)Math.ceil(Math.log(n)/Math.log(2));
    }

    private static int fieldWhereTotal(long n)
    {
        return fieldWithAtLeast(n+1)-1;
    }
Wenn auch ohne schleife. Aber wenn man's drauf anlegt...
Java:
do
{
    result = compute();
} while (false);
:joke:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Auf einem Schachbrett bewegen programmieren Java Basics - Anfänger-Themen 2
D Schachbrett (8x8) programmieren Java Basics - Anfänger-Themen 3
B Schachbrett Java Basics - Anfänger-Themen 2
F Best Practice Schachbrett Läufer Java Basics - Anfänger-Themen 11
I Schachbrett aus beliebigen Strings erstellen Java Basics - Anfänger-Themen 3
J Matrix für Schachbrett Java Basics - Anfänger-Themen 6
P Das Schachbrett - Reis Problem Java Basics - Anfänger-Themen 21
H Schachbrett erkennen Java Basics - Anfänger-Themen 19
J Schachbrett mit Hilfe von while-Schleifen Java Basics - Anfänger-Themen 10
J Schachbrett zeichnen Java Basics - Anfänger-Themen 9
E einfaches Schachbrett generieren Java Basics - Anfänger-Themen 9
P Schachbrett Java Basics - Anfänger-Themen 7
P Schachbrett mit N x N Feldern Java Basics - Anfänger-Themen 11
B Schachbrett Java Basics - Anfänger-Themen 17
D Schachbrett frage Teil2 Java Basics - Anfänger-Themen 15
D Schachbrett frage Java Basics - Anfänger-Themen 3
D schachbrett aufbauen Java Basics - Anfänger-Themen 29
I Springer auf Schachbrett Java Basics - Anfänger-Themen 18
M Schachbrett Java Basics - Anfänger-Themen 31
J Schachbrett Java Basics - Anfänger-Themen 6
B [Java] Schachbrett Frage Java Basics - Anfänger-Themen 11
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

Ähnliche Java Themen

Neue Themen


Oben