Mein erstes Game

Status
Nicht offen für weitere Antworten.

oyo

Mitglied
Hi leute !
ich habe ein ganz krasses problem und es mag euch lächerlich erscheinen.
ich bin gerade dabei ein java applet game zu schreiben und bin bisher gut weitergekommen:
http://www2.inf.fh-brs.de/~dkrueg2s/funky/bin/mygame.html

als nächsten schritt wollte ich ein auswahlmenü machen, dass mann vorher den charakter wählt. Das funktioniert aus irgendeinem grund nich so wie ich mir das vorstelle. hab schon viel probiert und ich dachte ich poste hier mal meinen stuff vllt. sieht ja jemand direkt was da falsch ist: http://www2.inf.fh-brs.de/~dkrueg2s/funky/funky.rar

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



public class funkymain extends Applet implements Runnable
{
	weapon[]w;
	weapon[]w2;
	player player1;
	player player2;
	player ritter;
	player koenig;
	weapon p1weapon1;
	weapon p2weapon1;
	Transparentfilter T;
	Hmenu HM;
	private Image dbImage;
	private Thread th;
	private Graphics dbg;
	private Image pimg;
	private Image pimg2;
	private Image pimg3;
	private Image pimg4;
	private Image wimg1;
	private Image p2img;
	private Image p2img2;
	private Image p2img3;
	private Image p2img4;
	private Image w2img1;
	private boolean activeH;
	private static int speed = 10;
	public void init()
	{
		setBackground(Color.BLACK);
		w = new weapon[4];
		w2 = new weapon[4];
		
		ritter = new player (50, 50, 20,200,100,w);
		koenig = new player (400,400,10,200,200,w2);
		T = new Transparentfilter(Color.WHITE);
		HM = new Hmenu(100,100);
		p1weapon1 = new fireball(2);
		p2weapon1 = new Sword(2);
		w2[0]=p1weapon1;
		w[0]= p2weapon1;
		activeH=true;
		// fetch images
		getImages();
		
		HM.setImages(pimg2,p2img2,pimg3,pimg4,wimg1);
		ritter.setImages(pimg,pimg2,pimg3,pimg4,wimg1);
		 koenig.setImages(pimg,pimg2,pimg3,pimg4,wimg1);
	}
		
	private void getImages()
	{
		MediaTracker tracker = new MediaTracker(this);

			pimg = getImage(getCodeBase(), "images/up1.gif");
			tracker.addImage(pimg, 1);
			pimg2 = getImage(getCodeBase(), "images/down1.gif");
			tracker.addImage(pimg2, 2);
			pimg3 = getImage(getCodeBase(), "images/left1.gif");
			tracker.addImage(pimg3, 3);
			pimg4 = getImage(getCodeBase(), "images/right1.gif");
			tracker.addImage(pimg4, 4);
			wimg1 = getImage(getCodeBase(), "images/Sword.gif");
			tracker.addImage(wimg1, 5);
			p2img = getImage(getCodeBase(), "images/Kup1.gif");
			tracker.addImage(p2img, 6);
			p2img2 = getImage(getCodeBase(), "images/Kdown1.gif");
			tracker.addImage(p2img2, 7);
			p2img3 = getImage(getCodeBase(), "images/Kleft1.gif");
			tracker.addImage(p2img3, 8);
			p2img4 = getImage(getCodeBase(), "images/Kright1.gif");
			tracker.addImage(p2img4, 9);
			w2img1 = getImage(getCodeBase(), "images/dark-fireball.gif");
			tracker.addImage(w2img1, 10);
		
		try
		{
			tracker.waitForAll();
		}
		catch (Exception exception)
		{

		}
	}

	/** Methode starts Thread */
	public void start ()
	{
		// create new thread
		th = new Thread (this);
		// start thread
		th.start ();
	}

	public void run ()
	{
		Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
		
		while (true)
		{
		while(activeH){
		HM.move();
		HM.leftm=false;
		HM.rightm=false;
		repaint();
		getImages();
			if(HM.chosen1){
				switch(HM.getcur()){
					case '1':
//kann ich dass so machen oder liegt der fehler hier ?
						player1 = ritter.clone();
					break;
					case '2':
						player1 = koenig.clone();
					break;
				}
			}
			if(HM.chosen2){
					switch(HM.getcur()){
					
						case '1':;
							player2 = ritter.clone();
							break;
						case '2':
							player2 = koenig.clone();
							break;
					}
			}
			if(HM.chosen1&&HM.chosen2){
			activeH=false;
			}
		}
		while(!activeH){
		player1.move();	
		player2.move();	
		w[0].dodmg(player2);
		w2[0].dodmg(player1);
		repaint();
		player1.set_right(false);	
		player1.set_up(false);	
		player1.set_down(false);	
		player1.set_left(false);
		player1.setUsew1(false);
		player2.set_right(false);	
		player2.set_up(false);	
		player2.set_down(false);	
		player2.set_left(false);
		player2.setUsew1(false);
		}
		try
		{
			// Stoppen des Threads für in Klammern angegebene Millisekunden
			Thread.sleep (speed);
		}
		catch (InterruptedException ex)
		{
			// do nothing
		}

		// Zurücksetzen der ThreadPriority auf Maximalwert
		Thread.currentThread().setPriority(Thread.MAX_PRIORITY);

		}
		
	}
	

	// event handling for keys down
	public boolean keyDown (Event e, int key)
	{
		
	if(key == Event.LEFT&& activeH){
		HM.leftm= true;
		}
	if(key == Event.RIGHT&& activeH){
		HM.rightm= true;
		}
	if(key == 107&& activeH){
		HM.chosen1=true;
		}
	if(key == 102&& activeH){
		HM.chosen2=true;

		}
	if(key == Event.LEFT&& !activeH)	{
		player1.set_left(true);
		player1.lookleft = true;
		player1.looktop = false;
		player1.lookdown = false;
		player1.lookright = false;
	}
	if(key == Event.UP&& !activeH)	{
		player1.set_up(true);
		player1.lookleft = false;
		player1.looktop = true;
		player1.lookdown = false;
		player1.lookright = false;
		
	}
	if(key == Event.DOWN&& !activeH)	{
		player1.set_down(true);
		player1.lookleft = false;
		player1.looktop = false;
		player1.lookdown = true;
		player1.lookright = false;

	}
	if(key == Event.RIGHT&& !activeH)	{
		player1.set_right(true);
		player1.lookleft = false;
		player1.looktop = false;
		player1.lookdown = false;
		player1.lookright = true;
	}
	if(key == 107&& !activeH){
		player1.setUsew1(true);
	}
	//player2
	if(key == 97&& !activeH)	{
		player2.set_left(true);
		player2.lookleft = true;
		player2.looktop = false;
		player2.lookdown = false;
		player2.lookright = false;
	}
	if(key == 119&& !activeH)	{
		player2.set_up(true);
		player2.lookleft = false;
		player2.looktop = true;
		player2.lookdown = false;
		player2.lookright = false;
		
	}
	if(key == 115&& !activeH)	{
		player2.set_down(true);
		player2.lookleft = false;
		player2.looktop = false;
		player2.lookdown = true;
		player2.lookright = false;

	}
	if(key == 100&& !activeH)	{
		player2.set_right(true);
		player2.lookleft = false;
		player2.looktop = false;
		player2.lookdown = false;
		player2.lookright = true;
	}
	if(key == 102&& !activeH){
		player2.setUsew1(true);
	}
	return true;
	}

	// event handling for keys up
	

	// Stop Thread
	public void stop()
	{
		th.stop();
	}

	// Stop Thread
	public void destroy()
	{
		th.stop();
	}

	public void update (Graphics g)
	{
		if (dbImage == null)
		{
			dbImage = createImage (this.getSize().width, this.getSize().height);
			dbg = dbImage.getGraphics ();
		}

		dbg.setColor (getBackground ());
		dbg.fillRect (0, 0, this.getSize().width, this.getSize().height);

		dbg.setColor (getForeground());

		paint(dbg);

		g.drawImage (dbImage, 0, 0, this);
	}

	/** draw game */
	public void paint (Graphics g)
	{
			if(activeH){
				HM.drawp(g);
			}
			if(!activeH){
			player2.drawp(g);
			player1.drawp(g);
			g.setColor(Color.WHITE);
			g.fillRect(0,V_safe.appletB,V_safe.appletH, 10);
			g.setColor(Color.RED);
				if(player1.gethp()>0){
					g.draw3DRect(20, 360,player1.maxhp, 5, false);
					g.fillRect(20, 360,player1.gethp(), 5);
				}
				if(player2.gethp()>0){
					g.fillRect(300, 360,player2.gethp(), 5);
					g.draw3DRect(300, 360,player2.maxhp, 5, false);
				}
			g.setColor(Color.BLUE);
			g.draw3DRect(20, 370,player1.maxmagic, 5, false);
			g.fillRect(20, 370,player1.getmagic(), 5);
			g.fillRect(300, 370,player2.getmagic(), 5);
			g.draw3DRect(300, 370,player2.maxmagic, 5, false);
				for(int i=0;i<V_safe.appletH;i++){
					for(int j=0;j<V_safe.appletB;j++){	
			
					T.filterRGB(j,i,Color.TRANSLUCENT);
					}
				}
			}
		}	
}
sorry für die nich kommentierung und wenn ihr noch anregungen habt oder wenn ihr noch was code von unterklassen braucht...POSTEN ;D
mfg OyO
 

andre111

Bekanntes Mitglied
Grundsätzlich solltest du dich an die Codingconventions halten, das macht das ganze wesentlich schöner und übersichtlicher.
 

Quaxli

Top Contributor
Es gibt verschiedene Möglichkeiten, wie Du das Lösen könntest. Du könntest auch einen Startbidlschirm basteln, wo die Figuren angezeigt werden und je nach Tastendruck startet das Spiel mit unterschiedlichen Spielerfiguren (F1 = Ritter, F2 = ...).

ABER: Bevor Du Dich an so Schnickschnack versuchst, würde ich Dir doch raten, erstmal die Basics gebacken zu kriegen.

ich bin gerade dabei ein java applet game zu schreiben und bin bisher gut weitergekommen

Das bist Du nämlich eigentlich nicht oder Du stellst keine sehr hohen Ansprüche an Dein Spiel. Zum Beispiel ruckelt Deine Figur sehr und wird bei mir überhaupt erst nach einem ersten Tastendruck angezeigt. Außerdem vermisse ich eine Animation der Figur. Du hast Dir da ein schönes Tileset aus dem Internet rausgesucht und nutzt es nicht, was ich schade finde.
Wenn ich so ein Applet im Internet finden würde, wäre es mir egal ob ich die Spielfigur auswählen kann, weil das Spiel an sich keinen Spaß macht (ruckeln, etc. ).
 

oyo

Mitglied
hey vielen dank für eure anregungen und das mit dem anzeigen animieren usw krieg ich schon noch hin bzw hatte ich noch vor... ich mach erst immer so happen und dann mit dem spiel an sich weiter, damit das grundgerüst steht :)
ich habe ja auch schon ein auswahlmenu, welches du dir ansehen könntest wenn du das die rar datei runterlädst, jedoch zeigt er mir nicht die figuren im spiel an, bzw. im moment kommt er gar nich in das spiel rein. muss also iwas mit den grafiken sein, weil ich was beim objekt klonen nich richtig gemacht hab !?! oder mann objekte nur in der init methode deklarieren ?!? jedem nochmal danke, der sich zeit nimmt mir ne antwort zu schreiben...
 

hdi

Top Contributor
Zu den Bildern kann ich nichts sagen, aber es sei mir erlaubt dir einen allgemeinen Hinweis zu geben: Threads sollte man niemals per stop() o.ä. Methoden beenden, weil das nicht "sauber" ist.

Ein Thread sollte eine Lebensvariable haben, in der er läuft:

Java:
while(isRunning) // statt while(true) {
 ...
}

und in der stop bzw. destroy Methode:

Java:
isRunning = false; // statt th.stop()

Damit verlässt der Thread nach dem momentanen Schleifendurchlauf seine run-Methode, und beendet sich "sauber".

Ich hoffe mal das trifft auf Applets auch zu, damit kenn ich mich nämlich nicht aus. Aber ich denke nicht dass es da einen Unterschied bei Threads gibt.
 

andre111

Bekanntes Mitglied
Hey, DevX, an deiner Stelle würde ich mich mal an das "Tutorial" von Ark halten und nicht wo anders blöde Sprüche klopfen. Das kann sich zwar jemand erlauben der von der ganzen Sache eine Ahnung hat, aber nicht der größte Anfänger überhaupt (du).
@Oyo: In der Signatur von Quaxli steht ein Link zu seinem Spieletutorial, da steht auch was über Bilder laden usw. drin.

lg André
 

oyo

Mitglied
also bitte hier noch einmal:
ich habe 2 figuren, ritter und könig, die ich in der init() methode deklariere:
Java:
ritter = new player (50, 50, 20,200,100,w);
	  koenig = new player (400,400,10,200,200,w2);
in meiner run() methode möchte ich nun mit hilfe einer switch anweisung alle werte z.b des ritter objektes KOPIEREN (!), so dass auch 2 mal der ritter ausgewählt werden kann:
Java:
while(activeH){
		HM.move();
		HM.leftm=false;
		HM.rightm=false;
		repaint();
		getImages();
			if(HM.chosen1){
				switch(HM.getcur()){
					case '1':
						player1 =ritter.clone();
					break;
					case '2':
						player1 =koenig.clone();
					break;
				}
			}
nun erhalte ich an den stellen, wo player1 methoden aufruft null pointer exeptions -->
mein problem ist, dass das clonen von meinem player objekt wohl nicht funktioniert.
Meine frage nun.. IST das überhaupt so möglich oder gibt es für so etwas vllt noch andere möglichkeiten ?
mfg oyo
 
Zuletzt bearbeitet:

Landei

Top Contributor
Ich glaube, das solltest du anders machen (ich hoffe, ich habe den Code oben richtig verstanden):

Java:
abstract class Player {
   public Player(viele, viele, viele, Argumente) {
      ...
  }
}

public class King extends Player {
   public King() {
       super(400,400,10,200,200,w2); //<--hier setzt du die Startwerte
   }
   //<-- hier wäre noch ganz ganz viel Platz für besondere "königliche" Verhaltensweisen
}

public class Knight extends Player {
   public Knight () {
       super(50, 50, 20,200,100,w); //<--hier setzt du die Startwerte
   }
   //<-- hier wäre noch ganz ganz viel Platz für besondere "ritterliche" Verhaltensweisen
}

//im case
case '1' : player1 = new King();

Clone sollte man meiner Meinung nach nur einsetzen
- wenn man das letzte Zipfelchen Performance braucht
- wenn es keine andere passende Lösung gibt
- und man ganz genau weiß, was man da eigentlich tut
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Leon.tr3x Mein erstes Programm/Spiel Spiele- und Multimedia-Programmierung 10
J Mein erstes Spiel [Spielevorstellung] Spiele- und Multimedia-Programmierung 2
G Mein erstes minigame -> problem mit Methode Spiele- und Multimedia-Programmierung 3
M Mein Erstes 2D Spiel Spiele- und Multimedia-Programmierung 14
K Mein Jump and Run charakter bewegt sich nicht mehr rückwärts... Spiele- und Multimedia-Programmierung 0
T Meine Erfahrung und mein Tipp Spiele- und Multimedia-Programmierung 4
Androbin Mein Spiel will sich nicht zeichnen lassen !!! Spiele- und Multimedia-Programmierung 7
B Mein Programm reagiert nicht auf den Tasstendruck Spiele- und Multimedia-Programmierung 1
C Mein Programm wird sofort terminated Spiele- und Multimedia-Programmierung 8
P Mein Android Game Spiele- und Multimedia-Programmierung 3
B Mein Java RPG Spiele- und Multimedia-Programmierung 13
A Mein 2D Shooter Spiele- und Multimedia-Programmierung 8
F Mein 1. Bewegtes Spiel! Spiele- und Multimedia-Programmierung 6
M Präsentiere mein Spiel (zum downloaden) Spiele- und Multimedia-Programmierung 11
S Methode verändert mein Eingabe Array oO Spiele- und Multimedia-Programmierung 6
A Mein SpaceInvaders Spiele- und Multimedia-Programmierung 10
grudge Mein Fungame vorstellen Spiele- und Multimedia-Programmierung 24
I Kritik/ Anregungen für mein zweites Spiel Spiele- und Multimedia-Programmierung 39
T Mein Vektor-Zeichenprogramm ist zu langsam Spiele- und Multimedia-Programmierung 4
R Könnt ihr mal mein Spiel testen (Rollenspiel)! Spiele- und Multimedia-Programmierung 17
I Problem: Mein Spiel lastet den PC voll aus Spiele- und Multimedia-Programmierung 7
M Testet mal mein kleines Memory Spiel ... Spiele- und Multimedia-Programmierung 14
P Erstes Spiel (Strategie) Spiele- und Multimedia-Programmierung 31
T Torquemada´s erstes Game (Pong) Spiele- und Multimedia-Programmierung 5
M Euer erstes Game Spiele- und Multimedia-Programmierung 16
L Spider game, Ist es verloren? Spiele- und Multimedia-Programmierung 4
J SNAKE-GAME-LOOP / (Applet zu Application) Spiele- und Multimedia-Programmierung 4
P Snake Game Verbessern Spiele- und Multimedia-Programmierung 15
E Organisation für Game Spiele- und Multimedia-Programmierung 1
G [Game-Multiplayer] Welt vom Server zum Client senden. Spiele- und Multimedia-Programmierung 0
C 3d Game Engine : PERFORMANTE Räumliche Verdeckung Spiele- und Multimedia-Programmierung 5
R Durch String Platform Game erstellen Spiele- und Multimedia-Programmierung 8
G Component System Java 2D Game LibGDX Spiele- und Multimedia-Programmierung 6
G Collision Detection in einem 2D Sandbox Game. Spiele- und Multimedia-Programmierung 2
J Problem mit Game Of Life Spiele- und Multimedia-Programmierung 3
B "Snake"-Game Logikfehler Spiele- und Multimedia-Programmierung 1
R Game Loop verhält sich eigenartig Spiele- und Multimedia-Programmierung 1
H Game Crash Spiele- und Multimedia-Programmierung 7
B Game of Life: Was mache ich falsch? Spiele- und Multimedia-Programmierung 3
$ Einstieg in Java Game Development Spiele- und Multimedia-Programmierung 11
BraunBerry Java Game Pixel "einfärben" Spiele- und Multimedia-Programmierung 6
BraunBerry Java Game verbesserte Kollisionserkennung Spiele- und Multimedia-Programmierung 18
BraunBerry Java Game Waypoint System Spiele- und Multimedia-Programmierung 3
T Moddable Game Spiele- und Multimedia-Programmierung 6
P java lwjgl Game Spiele- und Multimedia-Programmierung 0
T Game-Rendering Spiele- und Multimedia-Programmierung 5
I 2D-Side-Scrolling-Game in Chunks splitten Spiele- und Multimedia-Programmierung 9
Z 2D Pixer art RPG Game - Alpha auf Indie DB spielbar Spiele- und Multimedia-Programmierung 0
F Game of Life Spiele- und Multimedia-Programmierung 1
S Game/Cheat Spiele- und Multimedia-Programmierung 20
wolfgang63 Mit JavaFX einfaches Game programmieren Spiele- und Multimedia-Programmierung 5
D Textfield im Game ,Problem: while-Schleife Spiele- und Multimedia-Programmierung 3
O Pause Menu im 2D Game, bitte um Rat! Spiele- und Multimedia-Programmierung 4
J Java Game performance Probleme Spiele- und Multimedia-Programmierung 7
K Online Game? Spiele- und Multimedia-Programmierung 1
R Game Loop scheitert.. Spiele- und Multimedia-Programmierung 2
Androbin Verschwindender Spieler in 2D-Game Spiele- und Multimedia-Programmierung 7
Sogomn Game Loop Spiele- und Multimedia-Programmierung 2
M Jump 'n' Run Game - Blöcke? Spiele- und Multimedia-Programmierung 7
J Verständnissfragen zur Game-Loop Spiele- und Multimedia-Programmierung 2
N Game GUI Programmieren Spiele- und Multimedia-Programmierung 16
Black_ixx ManaWar Action Game Spiele- und Multimedia-Programmierung 5
M Multiplayer-Game auf Website Spiele- und Multimedia-Programmierung 2
M Multiplayer Game mit Frontend auf HTML5 - ohne ständigen Client Request - Möglich?! Spiele- und Multimedia-Programmierung 12
N Animationen für ein 2D game Spiele- und Multimedia-Programmierung 6
S Problem mit Zeitsteuerung der Game Loop Spiele- und Multimedia-Programmierung 4
Kenan89 Kleines Game Spiele- und Multimedia-Programmierung 26
M Vektor Game Spiele- und Multimedia-Programmierung 13
F Bot updaten von einem Browser game Spiele- und Multimedia-Programmierung 7
Samake03 [Game]"Plumbo - Lost in Depth" Preview und Fragen Spiele- und Multimedia-Programmierung 18
K Game Engine für selbstprogrammiertes Spiel Spiele- und Multimedia-Programmierung 27
A Music für Android game Spiele- und Multimedia-Programmierung 3
A Wie wird die Person im Game animiert, dass sie ihre Körperteile bewegen? Spiele- und Multimedia-Programmierung 3
K 3D Game wie Minecraft Spiele- und Multimedia-Programmierung 3
X Möglichst komplette 2D Game Engine? Spiele- und Multimedia-Programmierung 12
Kr0e Red Dwarf Game Server Spiele- und Multimedia-Programmierung 5
M Netzwerk-Game mit UDP Spiele- und Multimedia-Programmierung 8
ruerob Eure Meinung über Applet-game Spiele- und Multimedia-Programmierung 12
J das erste Game Spiele- und Multimedia-Programmierung 2
M Einen Hobby Game - / Grafik Designer zu finden (Screenshot vom Spiel) Spiele- und Multimedia-Programmierung 7
S Game Client für kleine Competition Spiele- und Multimedia-Programmierung 3
J 2D-Game-Engine? Spiele- und Multimedia-Programmierung 2
F Game mit LWJGL/JOGL in executable JAR packen, wie? Spiele- und Multimedia-Programmierung 6
P 2D Game - Alternative zur TileMap? Spiele- und Multimedia-Programmierung 2
W Memory Game Spiele- und Multimedia-Programmierung 4
Steev EGE - Easy Game Engine Spiele- und Multimedia-Programmierung 2
Developer_X X-Shooter Game Spiele- und Multimedia-Programmierung 21
C 2D Multiplayer Game Spiele- und Multimedia-Programmierung 5
Developer_X PingPong-the Game by Developer-X Spiele- und Multimedia-Programmierung 170
K My First Game "ORB" vielen Dank Quaxli Spiele- und Multimedia-Programmierung 23
hdi Das java-forum.org 2D-Game Projekt/Tutorial Spiele- und Multimedia-Programmierung 6
hdi Quiclix : Game download Spiele- und Multimedia-Programmierung 5
A Java 2D Game Spiele- und Multimedia-Programmierung 4
K Game-Tutorial von Quaxli Fragen Spiele- und Multimedia-Programmierung 18
G Suche passende Game api Spiele- und Multimedia-Programmierung 9
K Java Game Programming Buch Spiele- und Multimedia-Programmierung 3
C Hilfe bei einfachen Game Spiele- und Multimedia-Programmierung 15
L Kleines RTS Game -> Netzwerkproblem Spiele- und Multimedia-Programmierung 5
P Suche Leute für ein Hobby-Projekt (Browser Game) Spiele- und Multimedia-Programmierung 4
Q online game programieren Spiele- und Multimedia-Programmierung 8

Ähnliche Java Themen

Neue Themen


Oben