2017-11-30 1 views
0

Ich habe ein einfaches Schachspiel gemacht, das, wenn der Benutzer eine Eingabe wie a2a4 eingibt, das Stück von a2 nach a4 bewegt.Hat ein einfaches Schachspiel gemacht, aber es nimmt keine Benutzereingaben. Wie ändere ich das?

Hier möchte ich Benutzer in der Lage sein, jede Eingabe wie b2b4 eingeben, aber der einzige Eingang, den es verwendet, ist a2a4. Es verwendet die Benutzereingabe des Scanners überhaupt nicht. Wie ändere ich das?

Ich habe in meinen Code Kommentare geschrieben, die alles erklären. Die mit ******* am Ende der Kommentare sind diejenigen, die Probleme mit haben. Bitte helfen, ich muss wirklich das beenden.

import java.util.Scanner; 
    /* Class Chess 
    * with 1 field variable chessBoard 
    * Created a 2 d array called board which contains a, b, c, d, e, f, g, h. 
    * These are String arrays which contain the pieces. 
    * 
    */ 
    public class Chess2 { 
+0

Sie verwenden niemals 'startLetters' oder' startNumbers' oder 'endLetter' oder' endNumber'. – notyou

+0

korrigieren Sie mich, wenn ich falsch liege, aber ich kann nicht die Hauptmethode finden, ist dies die Treiberklasse? – Zingerella

Antwort

0
   board[1][1] = " "; 
       //and put in here. [endLetter][endNumber] 
       board[1][3] = temp; 

Statt der „1“ ist und ‚3‘ 's setzen hier Ihre Zahlen Sie Ihre Eingabe wie das gerade bekam:

   board[startLetters][startNumbers] = " "; 
       //and put in here. [endLetter][endNumber] 
       board[endLetter][endNumber] = temp; 

Hat es bisher nicht testen, aber das ist Eines der Probleme, die du gelöst hast.

edit:

   int startLetters = userInput.charAt(0) - 97; 
       int startNumbers = userInput.charAt(1) - 48; 
       int endLetter = userInput.charAt(2) - 97; 
       int endNumber = userInput.charAt(3) - 48; 

, da Sie für den ASCII-Wert Ihrer Eingabe fragen Sie benötigen um 48 (http://www.chip.de/ii/1/2/5/4/9/5/8/0/ascii-93c823e7009f26b0.png) den Wert Ihrer Nummerneingabe zu senken.

+0

Hallo. Es funktioniert nicht. Seine Ausrede im Thread "main" java.lang.ArrayIndexOutOfBoundsException: 50 \t bei Chess2.main (Chess2.java:61). Was ist board [startLetters] [startNumbers] = ""; Danke für die Hilfe –

0

Okay, ich habe dein Problem gefunden. Es ist bei int startNumbers = userInput.charAt(1); und int endNumber = userInput.charAt(3);. Wenn Sie die Zahl in ASCII lesen, müssen Sie um 48 dekrementieren, um die tatsächliche Zahl zu erhalten, aber da die Position in Arrays von 0 nicht von 1 gezählt wird, müssen Sie hier um 49 dekrementieren. Beispiel: a2a4 verschiebt das 3. Teil von unten nach oben 2 statt des 2. Teils.

so tun, nur

int startLetters = userInput.charAt(0) - 97; 
int startNumbers = userInput.charAt(1)-49; 
int endLetter = userInput.charAt(2) - 97; 
int endNumber = userInput.charAt(3)-49; 

hoffe, das hilft!

Verwandte Themen