Hallo,
zuerst einmal muss ich sagen, dass ich ein ziemlicher Neuling bei Java/OOP bin. Ich habe vorher mit PureBasic gearbeitet, wo ich jedoch nach gut 2 Jahren an die Grenzen der Sprache getroffen war. Ein Klassenkamerad programmiert in Java, durch ihn habe ich also begonnen, mich ein wenig hineinzulesen. Variablentypen kannte ich ja schon, einige für "richtige" Frischlinge schwierigen Logikprobleme waren durch meine Erfahrung mit PureBasic auch kein Problem. Nun wollte ich auf einem JFrame einen Canvas öffnen und darauf Buchstaben ausgeben, die durch eine for-Schleife angezeigt werden sollen. Da es jedoch verschiedene Buchstaben sein sollen, legte ich ein String-Array an. Nun komme ich zum eigentlichen Problem: In der paint() Methode wird der String nicht angezeigt, gebe ich jedoch einen String direkt ein (z.B. "G"), dann wird er angezeigt. Außerdem kann ich sicher sein, dass der String tatsächlich im Array ist, da, wenn ich in der paint() Methode ein System.out.println(name des arrays[nummer]) einfüge, mir der String in der Konsole von Eclipse ausgegeben wird.
Dies ist mein Code, der euch wahrscheinlich sehr wirr vorkommen wird, da ich gerade erst angefangen habe:
Klasse "Game"
Klasse "Screen":
Ich hoffe, dass ihr mit dem Code etwas anfangen könnt. Falls es sonstige Verbesserungsvorschläge gibt, werden die natürlich gerne angenommen
Danke im Vorraus
zuerst einmal muss ich sagen, dass ich ein ziemlicher Neuling bei Java/OOP bin. Ich habe vorher mit PureBasic gearbeitet, wo ich jedoch nach gut 2 Jahren an die Grenzen der Sprache getroffen war. Ein Klassenkamerad programmiert in Java, durch ihn habe ich also begonnen, mich ein wenig hineinzulesen. Variablentypen kannte ich ja schon, einige für "richtige" Frischlinge schwierigen Logikprobleme waren durch meine Erfahrung mit PureBasic auch kein Problem. Nun wollte ich auf einem JFrame einen Canvas öffnen und darauf Buchstaben ausgeben, die durch eine for-Schleife angezeigt werden sollen. Da es jedoch verschiedene Buchstaben sein sollen, legte ich ein String-Array an. Nun komme ich zum eigentlichen Problem: In der paint() Methode wird der String nicht angezeigt, gebe ich jedoch einen String direkt ein (z.B. "G"), dann wird er angezeigt. Außerdem kann ich sicher sein, dass der String tatsächlich im Array ist, da, wenn ich in der paint() Methode ein System.out.println(name des arrays[nummer]) einfüge, mir der String in der Konsole von Eclipse ausgegeben wird.
Dies ist mein Code, der euch wahrscheinlich sehr wirr vorkommen wird, da ich gerade erst angefangen habe:
Klasse "Game"
Java:
import java.awt.*;
import javax.swing.*;
public class Game extends JFrame {
Game(){
init();
}
public void init(){
JFrame frame = new JFrame();
frame.setTitle("Char war");
frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
Screen s = new Screen();
frame.add(s);
frame.setLocationRelativeTo(null);
setLayout(new GridLayout(1,1,0,0));
frame.setVisible(true);
}
public static void main(String args[]){
new Game();
}
}
Klasse "Screen":
Java:
import java.awt.*;
import java.util.Random;
import javax.swing.*;
public class Screen extends Canvas implements Runnable {
public static Thread t = new Thread();
public static String charry[] = new String[20]; //erstellen des arrays
public static int x = 10; //0
public static int y = 10; //0
public Screen(){
for(int r = 0;r<charry.length;r++){ //jedem teil des arrays "a" zuweisen
charry[r] = "a";
}
t.start();
}
public void paint(Graphics g){
g.setColor (new Color(0,0,0));
g.fillRect(0, 0, 800, 600);
g.setColor (new Color(255,0,0));
for (int i=0;i<charry.length;i++){
g.drawString(charry[i], x, y); //charry[i] anzeigen
x += 15; //für das x
if (x>800){
x = 0;y+=20; // "zeilenumbruch"
}
}
x=0;y=0;
g.drawString("a", x+10, y+10); //Test für das Anzeigen (funktioniert!)
}
public void run() {
while(true){
repaint();
try{
Thread.sleep(20);
}catch(Exception e){
e.printStackTrace();
}
}
}
}
Ich hoffe, dass ihr mit dem Code etwas anfangen könnt. Falls es sonstige Verbesserungsvorschläge gibt, werden die natürlich gerne angenommen