Multiplayer Shooter- Wie geht das mit Canvas & Graphics

antonbracke

Mitglied
Hallo,

ich schreibe seit kurzem an einem multiplayer shooter, bei dem ich anfangs Weise einfach nur über ein 20 * 20 Feld laufen kann! Alles soll multiplayer gehen mit einem einfachen Echo-Server (das hat mein Lehrer vorgegeben)! Ich habe jeetzt aber das große Problem, dass ich das mit dem Canvas und den Graphics nicht ordentlich hinbekomme (beim auführen kommt eine null pointer execption)!

Vielleicht kann mir ja jemand helfen!
Würde mich auch über andere Tipps freuen, da ich in Java noch keinen wirklich eleganten Stil habe.

JAVA-CODE (GUI-CLASS):
Java:
...
Game game = new Game(gui);
JPanel pgame = new JPanel();
pgame.add(game);
game.addKeyListener(this);
...

JAVA-CODE (GAME-CLASS):
Java:
package Game;

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;

import Main.GUI;

public class Game extends Canvas {
	private static final long serialVersionUID = 1L;
	static GUI gui = null;
	static int[][] ls_game = new int[20][20];
	static int[] ls_myposi = new int[2];
	static Graphics gr;

	public Game(GUI _gui) {
		if (_gui != null) {
			gui = _gui;
			gr = this.getGraphics();
			setBounds(10, 10, 500, 500);
			setBackground(Color.LIGHT_GRAY);	
			setGameField();
		}
	}

	public void paint(Graphics _g) {
		gr = _g;
		gr.setColor(Color.GREEN);
		gr.fillRect(10, 10, 20, 20);
		this.repaint();
	}

	public void setGameField() {
		init();
		Random rnd = new Random();
		int x = rnd.nextInt(20);
		int y = rnd.nextInt(20);
		ls_myposi[0] = x;
		ls_myposi[1] = y;
		updateGUI(3, x, y);
	}

	public void init() {
		for (int i = 0; i < ls_game.length; i++) {
			for (int j = 0; j < ls_game.length; j++) {
				ls_game[i][j] = 0;
			}
		}
		for (int i = 0; i < ls_myposi.length; i++) {
			ls_myposi[i] = 0;
		}
	}

	public void updateGUI(int type, int x, int y) {
		System.out.println(type + " " + x + " " + y);
		switch (type) {
		case 0:
			gr.setColor(Color.magenta);
			gr.fillRect(x, y, 20, 20);
			break;
		case 1:
			gr.setColor(Color.BLUE);
			gr.fillRect(x, y, 20, 20);
			break;
		case 2:
			gr.setColor(Color.CYAN);
			gr.fillRect(x, y, 20, 20);
			break;
		case 3:
			gr.setColor(Color.GREEN);
			gr.fillRect(x, y, 20, 20);
			break;
		}
	}

	public void setnewPosi(int type, int x, int y) {
		ls_game[x][y] = type;
		updateGUI(type, x, y);
	}

	public void go(int go) {
		int x = ls_myposi[0];
		int y = ls_myposi[1];

		switch (go) {
		case 0: // up
			y++;
			break;
		case 1: // down
			y--;
			break;
		case 2: // left
			x--;
			break;
		case 3: // right
			x--;
			break;
		}
		System.out.println(cango(x, y));
		if (cango(x, y)) {
			ls_myposi[0] = x;
			ls_myposi[1] = y;
			setnewPosi(30, x, y);
		}
	}

	public boolean cango(int x, int y) {
		if (x < 0) {
			return false;
		}
		if (y < 0) {
			return false;
		}
		if (x > 20) {
			return false;
		}
		if (y > 20) {
			return false;
		}
		return true;
	}

	// types::::
	// 0:leeres Feld
	// 1:blockade
	// 2:
	// 30:ich
	// 31:Player 1
	// 32:Player 2
	// 33:Player 3
}


Danke schon mal im Voraus

Anton
 

antonbracke

Mitglied
Der Fehler aus der GAME-CLASS:
Java:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at Game.Game.updateGUI(Game.java:71)
	at Game.Game.setGameField(Game.java:41)
	at Game.Game.<init>(Game.java:23)
	at Main.GUI.start(GUI.java:98)
	at Main.GUI.access$1(GUI.java:95)
	at Main.GUI$2.actionPerformed(GUI.java:72)
	at java.awt.Button.processActionEvent(Unknown Source)
	at java.awt.Button.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$000(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
 

bERt0r

Top Contributor
Wie du siehst steht da:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at Game.Game.updateGUI(Game.java:71)
Das heisst in Zeile 71 fliegt er raus. Du hältst in deiner Klasse ein Graphics Objekt, das du die u.a. sogar mit getGraphics() beschaffst. Das ist ein verbreiteter Anfängerfehler, siehe Zeichnen in Swing Tutorial. Ausserdem darf dein Graphics Objekt nur innerhalb der paint Methode angesprochen/verändert werden. Dein Fehler fliegt, weil der Prozess, der die paint Methode aufruft das Graphics Objekt zerstört nachdem die paint fertig ist - wenn du dann was dran ändern willst ist nix mehr da.
Bzgl. Stile ist mir noch aufgefallen dass du repaint in der paint aufrufst. Das ist nicht schön. Setzt dich lieber mal mit Threads auseinander. Ich bin sicher hier kursieren einige Tutorials für Spiele von denen du dir was abschauen kannst, siehe Forum Spiele- und Multimedia-Programmierung
 

antonbracke

Mitglied
Hallo bERt0r,

wie genau sollte ich das dann dort ändern.
Ich versteh das mit dem getGraphics(); und dem Graphics Objekt noch nicht so ganz!

Anton
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
komplettlost Vollbildmodus für MacOs Nutzer geht nicht AWT, Swing, JavaFX & SWT 13
B Swing Menü geht nicht AWT, Swing, JavaFX & SWT 5
izoards Bild ausdrucken - PageFormat setzen geht nicht AWT, Swing, JavaFX & SWT 5
J import javafx.fxml* bei JavaFX 13 geht nicht mehr AWT, Swing, JavaFX & SWT 7
S PatentComponent geht nicht? AWT, Swing, JavaFX & SWT 3
H automatische Anzahl der Spalten ermitteln -> geht nicht AWT, Swing, JavaFX & SWT 6
B JavaFX Wo liegt mein Gedankenfehler ??? KeyEvent geht nicht ... AWT, Swing, JavaFX & SWT 8
J Warum geht das nicht? if-else usw..... compilieren geht nicht -- HILFE!!! AWT, Swing, JavaFX & SWT 10
LexeB4F setValueAT geht nicht... wieso? AWT, Swing, JavaFX & SWT 14
T JLabel in die Mitte(JLabel.CENTER geht nicht) AWT, Swing, JavaFX & SWT 12
X Swing JButton's zum JScrollPane hinzufügen geht nicht. Bitte um Hilfe. AWT, Swing, JavaFX & SWT 9
F Swing String[] in JTextArea ausgeben. Jeder Eintrag in neue Zeile, aber ohne "\n"- Geht das? AWT, Swing, JavaFX & SWT 3
B Swing Form undecorated: Beim Bewegen geht die Maus immer automatisch zur linken Seite. AWT, Swing, JavaFX & SWT 7
I JavaFX - MP3 geht nicht AWT, Swing, JavaFX & SWT 4
N gewünschte ActionListener bei RadioButton mit isSelected geht nicht AWT, Swing, JavaFX & SWT 2
C Swing Update von swing-TableModels per Thread. Eins geht, das andere nicht, warum? AWT, Swing, JavaFX & SWT 12
S KeyListener geht nicht AWT, Swing, JavaFX & SWT 12
B JInternalFrame Focus setzten geht nicht AWT, Swing, JavaFX & SWT 2
D Swing fullscreen switch geht nicht richtig AWT, Swing, JavaFX & SWT 8
F Icongröße ändern, geht das ? AWT, Swing, JavaFX & SWT 2
Q Swing MouseListener auf JTable geht nicht AWT, Swing, JavaFX & SWT 2
0 JTable Spaltenbreite automatisch an Inhalt anpassne geht nicht AWT, Swing, JavaFX & SWT 3
K Options-Frame integrieren (zum zuschalten und wegschalten wie geht man da ran? AWT, Swing, JavaFX & SWT 7
R JTextField mit abgerundeten Ecken - Geht über Grenze hinaus AWT, Swing, JavaFX & SWT 4
B Java und ansprechende Benutzeroberflächen - geht das? AWT, Swing, JavaFX & SWT 16
V Swing Custom JToggleButton in JTable - Click-Event geht erst beim zweiten Mal AWT, Swing, JavaFX & SWT 7
C Java2D Transparenz geht bei einfärben verloren AWT, Swing, JavaFX & SWT 7
T transparent geht nicht (btw: rechteck) AWT, Swing, JavaFX & SWT 13
E Null-Layout - Wie geht es ohne? AWT, Swing, JavaFX & SWT 19
Y LookAndFeel Nimbus einschalten geht nicht AWT, Swing, JavaFX & SWT 31
M Bild aus .jar Archiv laden geht nicht AWT, Swing, JavaFX & SWT 6
L Stopp Button geht nicht AWT, Swing, JavaFX & SWT 2
S JDesktopPane bei Button-Klick anzeigen geht nicht AWT, Swing, JavaFX & SWT 5
D JList Scrollbar machen geht nicht AWT, Swing, JavaFX & SWT 4
J Label mit transparentem hintergrund - geht das? AWT, Swing, JavaFX & SWT 21
H Sub-Dialog von modalem JDialog aus aufrufen - geht das? AWT, Swing, JavaFX & SWT 6
B Panels stapeln, geht das? AWT, Swing, JavaFX & SWT 7
P SetBounds auf JPanel geht nicht! AWT, Swing, JavaFX & SWT 2
S SWT Composite mit Layout Manager geht nicht AWT, Swing, JavaFX & SWT 4
S JPanel geht über Rand hinaus AWT, Swing, JavaFX & SWT 7
E setAlwaysOnTop geht verloren AWT, Swing, JavaFX & SWT 3
B Swing Variable in JTextfield geht nicht AWT, Swing, JavaFX & SWT 10
B Swing setDefaultButton geht nicht - Komponente fängt Events ab AWT, Swing, JavaFX & SWT 5
M FileFilter geht nicht AWT, Swing, JavaFX & SWT 5
A repaint() geht nicht ? AWT, Swing, JavaFX & SWT 5
D Jlist auf 10 Zeilen begrenzen geht bei mir nicht AWT, Swing, JavaFX & SWT 2
D Runtime.getRuntime.exec() + SWT oder Swing = geht nicht AWT, Swing, JavaFX & SWT 2
M Action.DISPLAYED_MNEMONIC_INDEX_KEY geht nicht mehr AWT, Swing, JavaFX & SWT 2
F JScrollPane setLayout geht nicht AWT, Swing, JavaFX & SWT 2
R MVC: System.out.prinln in View umleiten geht nicht richtig AWT, Swing, JavaFX & SWT 7
B MouseListener / doppelklick geht net AWT, Swing, JavaFX & SWT 16
G JToggleButton pressed geht nicht AWT, Swing, JavaFX & SWT 2
G setLocationRelativeTo(frame) geht plötzlich nicht mehr AWT, Swing, JavaFX & SWT 3
G fireTableDataChanged() geht das auch ohne vector? AWT, Swing, JavaFX & SWT 13
Z Buttons erscheinen erst wenn man mit der Maus drüber geht AWT, Swing, JavaFX & SWT 7
P GridBagLayout einfaches Beispiel geht nicht? AWT, Swing, JavaFX & SWT 5
I Tastur eingabe geht nicht (wenn Button vorhanden) AWT, Swing, JavaFX & SWT 5
W Swing, 2 JProgressbars und threads geht das? AWT, Swing, JavaFX & SWT 2
X JTable "geht" erst beim 2.Klick AWT, Swing, JavaFX & SWT 2
I JRadioButton disablen geht nicht AWT, Swing, JavaFX & SWT 4
M Wieso geht das nicht! AWT, Swing, JavaFX & SWT 3
G JDialog hinter Glasspane von JFrame. Geht das? AWT, Swing, JavaFX & SWT 3
P [SWT] - ProgressBar, Prozentzahlen live anzeigen geht nicht AWT, Swing, JavaFX & SWT 13
W netbeans projekt in Eclipse importieren -gui teil geht nicht AWT, Swing, JavaFX & SWT 5
V JTable - farbige Boolean-Felder - geht das? AWT, Swing, JavaFX & SWT 3
O Panels ein und ausblenden - geht das? AWT, Swing, JavaFX & SWT 3
T Look and Feel ändern geht nicht, obwohl es geht. AWT, Swing, JavaFX & SWT 2
F Serialisiertes Object geht nicht zu Inizialisieren AWT, Swing, JavaFX & SWT 7
K setSize und setLocation geht nicht AWT, Swing, JavaFX & SWT 8
S JFileChooser Pfadübergabe mit Leerzeichen geht nicht AWT, Swing, JavaFX & SWT 6
G Warum geht das nicht? AWT, Swing, JavaFX & SWT 3
S JScrollPane in einem JDialog = geht nicht? AWT, Swing, JavaFX & SWT 14
B Layoutvorgabe: Geht so was überhaupt? AWT, Swing, JavaFX & SWT 5
S Animation geht nicht AWT, Swing, JavaFX & SWT 3
S JLabel zeilenumbruch ? geht das in JDialog? AWT, Swing, JavaFX & SWT 2
T Paint-Methode geht nicht AWT, Swing, JavaFX & SWT 5
R Wie geht dieser Effekt? AWT, Swing, JavaFX & SWT 15
I SWT - Browser.setUrl(url) geht nicht :-( AWT, Swing, JavaFX & SWT 6
M Antialiasing geht . bis zum repaint ! AWT, Swing, JavaFX & SWT 4
J Jar Datei geht nicht richtig AWT, Swing, JavaFX & SWT 7
S JTextArea background Transparent geht nicht AWT, Swing, JavaFX & SWT 23
raptorrs Swing, Datenformate und wie geht der Datentransfer? AWT, Swing, JavaFX & SWT 8
M setOpaque() geht. und geht nicht :-( AWT, Swing, JavaFX & SWT 2
A Zeichnen auf zwei Labels. Geht nit AWT, Swing, JavaFX & SWT 7
R Farbcode geht nicht AWT, Swing, JavaFX & SWT 4
I setUndecorated geht nicht. AWT, Swing, JavaFX & SWT 3
G Zugriff auf TextField geht nicht AWT, Swing, JavaFX & SWT 5
L JComboBox befüllen geht nicht. AWT, Swing, JavaFX & SWT 18
G jbutton mit linebreak. setEnabled geht nicht mehr AWT, Swing, JavaFX & SWT 4
J Gleitende Fenster in Java - geht das? AWT, Swing, JavaFX & SWT 2
G Look&Feel geht nicht AWT, Swing, JavaFX & SWT 3
B Jlist getSelectedIndices geht net AWT, Swing, JavaFX & SWT 2
Z JScrollPane geht nicht AWT, Swing, JavaFX & SWT 7
F Internes Frame RICHTIG schließen..geht das überhaupt ? AWT, Swing, JavaFX & SWT 2
N Methode für Bild laden geht nur in der eigenen Klasse... AWT, Swing, JavaFX & SWT 3
A Speichern-Dialog geht nicht weg AWT, Swing, JavaFX & SWT 13
A Scrollen von Fenster geht nicht AWT, Swing, JavaFX & SWT 4
R GUI geht nicht! AWT, Swing, JavaFX & SWT 2
P Image in JApplet geht nicht AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben