Hilfe bei einfachen Game

Status
Nicht offen für weitere Antworten.
C

Chaosdesigner

Gast
Guten Abend Leute,

Ich hab seid kurzen angefangen Java zuprogrammieren und ich hab angefangen mit meinem Dad ein kleines simples Spiel zu Programmieren, nun möchte ichs aber alleine feritg machen und ihm das so als ne Art Geschenk machen da mitr schon immer beibringen wollte zu programmieren.

Jetzt aber zu meinem Problem, in meinem "Spiel" geht es darum die Spiel Figure (bis jetzt nur ein kleiner Punkt) in die Ziel Fläche zubegeben um so ins nächste Level zukommen. Ich hab mehrere Wände eingefügt die so eine art Labyrinth bilden und jedes Level werden es mehr aber es is ein bisschen zu leicht, deswegen wollt ich das os machen das man nur alles in dem Umfeld von der Spiel Figure macht, d.h. das dur ein kleiner Teil des Spielfelds beleuchtet is und der andere dunkel ist.


Ich weiß jetzt nicht wie Weit ihr mir folgen könnt aber wenn irgentjemand mir vielleicht ein paar tips geben könnt wie ich das machen kann, wäre das echt super nett.


Vielen Dank schon mal,

mfg
 

The_S

Top Contributor
Hast du eine 2D-Draufsicht? Falls ja einfach alles wie bisher machen, und am Ende von deiner Zeichenmethode alles in einem bestimmten Umkreis deiner Spielfigur mit schwarz überzeichnen. Ein kleines Beispiel:

Code:
package de.shadow.test;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class ShadowTest extends JPanel implements KeyListener {

	private static final long serialVersionUID = 1L;
	
	private int xPos = 20;
	private int yPos = 20;
	private int viewFieldSize = 20;
	private int figSize = 10;
	
	private BufferedImage shadow = null;
	private int transparent = 0;
	
	public ShadowTest() {
		transparent = new Color(0,0,0,0).getRGB();
		addKeyListener(this);
		setFocusable(true);
	}
	
	private void createShadow() {
		
		shadow = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB);
		Graphics2D g2 = shadow.createGraphics();
		g2.setColor(getForeground());
		g2.fillRect(0, 0, getWidth(), getHeight());
		g2.dispose();
		for (int i = xPos + figSize / 2 - viewFieldSize; i < xPos + figSize / 2 + viewFieldSize && i < getWidth(); i++) {
			if (i < 0) {
				i = 0;
			}
			for (int j = yPos + figSize / 2 - viewFieldSize; j < yPos + figSize / 2 + viewFieldSize && j < getHeight(); j++) {
				if (j < 0) {
					j = 0;
				}
				shadow.setRGB(i, j, transparent);
			}
		}
	}
	
	public void paintComponent(Graphics g) {
		
		createShadow();
		g.setColor(getBackground());
		g.fillRect(0, 0, getWidth(), getHeight());
		g.setColor(getForeground());
		g.fillRoundRect(xPos, yPos, figSize, figSize, figSize, figSize);
		// restliche Zeichenoperationen
		g.drawImage(shadow, 0, 0, this);
	}

	public void keyPressed(KeyEvent e) {

		if (e.getKeyCode() == KeyEvent.VK_UP) {
			yPos -= 2;
			repaint();
		}
		else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
			yPos += 2;
			repaint();
		}
		else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
			xPos -= 2;
			repaint();
		}
		else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
			xPos += 2;
			repaint();
		}
	}

	public void keyReleased(KeyEvent e) {}
	public void keyTyped(KeyEvent e) {}
	
	public static void main(String[] args) {
		
		JFrame frame = new JFrame();
		frame.setContentPane(new ShadowTest());
		frame.setSize(200, 400);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
}
 
C

Chaosdesigner

Gast
Vielen Dank für die schnelle antwort, fast genau so hab ich mir das vorgestellt, aber ich weiß nich genau wie ich das jetzt bei mir reinpacken soll. Wie gesagt ich bin ziemlich neu mit Java....

Naja thx nochmal
 

The_S

Top Contributor
Ja, aber ich soll das jetzt wissen oder wie? Ohne eine einzige Zeile Code/weiteren Erklärungen deinerseits ...
 
C

Chaosdesigner

Gast
Ich nehme mal an das einfach nur reinkopieren nix bringen wird oder? Wie genau müsste ich das dann reinkopiern?

thx
 
C

Chaosdesigner

Gast
Ja fast müsste ich denn hier von meinem code reinkopiern? Ich glaub das ganze hier reinzustellen wäre nicht nötig hab ich recht?

Du meintest ich soll das bei meiner Zeichen methode reinzun aber bis jetzt hab ich nur eine bei meinem DrawPanel

Code:
public void paintComponent(Graphics g)
   {  
      super.paintComponent(g);
      Graphics2D g2 = (Graphics2D) g;

            Target.show(g2);
      
            for (GameFigure gf : GameObjs)
            {
             gf.show(g2);
            }
            
            for (GameWall gw : GameWalls)
            {
             gw.show(g2);
            }
            
            
   }
 
G

Gast

Gast
Sorry ich hab mich oben ein bisschen vertippt, ich meinte natürlich "was müsste ich denn hier von meinem code reinkopiern" und "methode reinzutun". Und ich hab hier mal ne Liste von all den Classes die ich hab vielleicht könnt ihr mit jetzt sagen was ihr braucht um zuwissen wo der code reinkommt.

DrawGameApplet
StartFrame
StartButtonPanel
GameFrame
DrawPanel
GameFigure
GameFigCircle
GameFigPlayer
GameFigTria
GameWall
GameTarget
TeleporterEntry
TeleporterExit
 

The_S

Top Contributor
Naja, das bringt mir nicht viel, aber so wie ich das sehe, muss die createShadow (natürlich auf dein Programm angepasst) an den Anfang der paintComponent-Methode und am Ende solltest du das erzeugte Bild mit deinem Graphics2D Objekt zeichnen.
 
C

Chaosdesigner

Gast
Ok aufjedenfall schon mal vielen dank

Aber was von deinem Bespiel könnte ich denn weglassen? Bzw welche sachen brauche ich um den shadow effekt zu erstellen?
 

The_S

Top Contributor
Also komm, ein bisschen eigeninitiative kann man schon verlangen. So schwer ist der Code nicht. Wir können das auch andersrum aufziehen ;) : Was verstehst du denn an meinem Code nicht?
 
C

Chaosdesigner

Gast
Ja sry du hast recht, ich muss mich aml ein bisschen mehr damit beschäftigen. Also ich nehme mal an das ich alles was ab "public void keyPressed(KeyEvent e)" kommt weg lassen kann. So ich denke mal ich muss jetzt auch erstmal ein ganz neue Klasse machen die die eigenschaften vom SHadow angeben, das einzige wo ich mir überhaupt nich sicher bin is mit der paintcomponent, soll ich die in der Shadow Class lassen oder in meine alte PaintComponent einfügen? Muss ich nich auch noch irgentwas in den Constructor eingeben?

Tut mir echt leid das ich immer so dumme Fragen stelle aber ich hab bissher alles nur mit meinem Vater gemacht und ich möchte ihm einfach mal eine Freude machen und ihm zeigen das ich das auch alleine n bisschen lernen kann. Und was kann man schon von einem 14 jährigen verlangen...^^

mfg
 
C

Chaosdesigner

Gast
Noch eine Frage: was wäre in deinem Code Der constructor?
 

filth

Bekanntes Mitglied
Code:
public ShadowTest() {
      transparent = new Color(0,0,0,0).getRGB();
      addKeyListener(this);
      setFocusable(true);
   }

das ist ein konstruktor
 

The_S

Top Contributor
sorry, hatte deine Frage irgendwie übersehen. Aber irgendwie stellste dich auch n bisschen an bzw. hat man nicht gerade den Eindruck, dass du weißt, was du tust. Aber OK:

Im Prinzip brauchst du nur das

Code:
   private BufferedImage shadow = null;
   private int transparent = 0;

, das im Konstruktor

Code:
transparent = new Color(0,0,0,0).getRGB();

, das in angepasster Form für dein Programm

Code:
   private void createShadow() {
      
      shadow = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB);
      Graphics2D g2 = shadow.createGraphics();
      g2.setColor(getForeground());
      g2.fillRect(0, 0, getWidth(), getHeight());
      g2.dispose();
      for (int i = xPos + figSize / 2 - viewFieldSize; i < xPos + figSize / 2 + viewFieldSize && i < getWidth(); i++) {
         if (i < 0) {
            i = 0;
         }
         for (int j = yPos + figSize / 2 - viewFieldSize; j < yPos + figSize / 2 + viewFieldSize && j < getHeight(); j++) {
            if (j < 0) {
               j = 0;
            }
            shadow.setRGB(i, j, transparent);
         }
      }
   }

und das als letzten Aufruf in deiner paintComponent Methode

Code:
   public void paintComponent(Graphics g) {
      // Deine Sachen in paintComponent
      createShadow();
      g.drawImage(shadow, 0, 0, this);
   }

Und eine neue Klasse brauchst du natürlich auch nicht.
 

Marco13

Top Contributor
Code:
// Von [url]http://www.java-forum.org/de/viewtopic.php?t=68157&highlight=&sid=00ff656850aba2f36e8dd0f238ba73e8[/url]
// Modified

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class ShadowTest extends JPanel implements KeyListener {

   private static final long serialVersionUID = 1L;

   private int xPos = 40;
   private int yPos = 40;
   private int viewFieldSize = 40;
   private int figSize = 10;

   private BufferedImage shadow = null;

   public ShadowTest() {
      addKeyListener(this);
      setFocusable(true);
   }

   private void createShadow() {

      shadow = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB);
      Graphics2D g2 = shadow.createGraphics();
      g2.setColor(Color.BLACK);
      g2.fillRect(0, 0, getWidth(), getHeight());
      g2.dispose();


      int xMin = Math.max(xPos - viewFieldSize, 0);
      int xMax = Math.min(xPos + viewFieldSize, getWidth());

      int yMin = Math.max(yPos - viewFieldSize, 0);
      int yMax = Math.min(yPos + viewFieldSize, getHeight());

      for (int i = xMin; i<xMax; i++)
      {
         for (int j = yMin; j<yMax; j++)
         {
            int dx = xPos-i;
            int dy = yPos-j;
            double dist = Math.sqrt(dx*dx+dy*dy);
            double d = (dist / viewFieldSize);
            int opacity = 0;
            opacity = (int)(255 * d*d);
            opacity = Math.min(255, opacity);
            shadow.setRGB(i, j, opacity<<24);
         }
      }
   }

   public void paintComponent(Graphics g) {

      createShadow();
      g.setColor(getBackground());
      g.fillRect(0, 0, getWidth(), getHeight());
      g.setColor(getForeground());

      for (int y=20; y<getHeight(); y+=20)
      {
          g.drawString("Hallo "+y+" Welt", 20, y);
      }

      g.fillOval(xPos-figSize/2, yPos-figSize/2, figSize, figSize);
      // restliche Zeichenoperationen
      g.drawImage(shadow, 0, 0, this);
   }

   public void keyPressed(KeyEvent e) {

      if (e.getKeyCode() == KeyEvent.VK_UP) {
         yPos -= 2;
         repaint();
      }
      else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
         yPos += 2;
         repaint();
      }
      else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
         xPos -= 2;
         repaint();
      }
      else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
         xPos += 2;
         repaint();
      }
   }

   public void keyReleased(KeyEvent e) {}
   public void keyTyped(KeyEvent e) {}

   public static void main(String[] args) {

      JFrame frame = new JFrame();
      frame.setContentPane(new ShadowTest());
      frame.setSize(200, 400);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setVisible(true);
   }
}
( :cool: )
 
G

Guest

Gast
Hobbit_Im_Blutrausch hat gesagt.:
bzw. hat man nicht gerade den Eindruck, dass du weißt, was du tust.

Das sollte auch den Eindruck machen denn ich weiß es ja eben nich, ich hoffe nur das ich dann aus diesem Beispiel lerne und somit das nächste mal nicht so dumme Fragen stellen muss. Ich denke aber mal das es somit jetzt geklärt ist, ich bedanke mich an alle die hier geholfen habe und noch mal entschuldigung für meine dummen Fragen.

thx

mfg
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Atten007 Minecraft Hilfe bei benutzerdefinierten Bannervorlagen in MCreator benötigt Spiele- und Multimedia-Programmierung 0
R Flappy Bird Hilfe Spiele- und Multimedia-Programmierung 1
Atten007 Minecraft Hilfe bei der Fehlerbehebung in MCreator benötigt Spiele- und Multimedia-Programmierung 1
Atten007 Minecraft Hilfe beim MCreator Plugin benötigt Spiele- und Multimedia-Programmierung 0
Atten007 Minecraft Hilfe beim MCreator Plugin benötigt Spiele- und Multimedia-Programmierung 5
A [HILFE] - Minecraft-Problem! Spiele- und Multimedia-Programmierung 1
JEP1 Hilfe bei Spiel Spiele- und Multimedia-Programmierung 1
J TreeNode erstellen [Hilfe beim Konstruktor, Zeile 16] Spiele- und Multimedia-Programmierung 2
Z Minecraft Hilfe bei Minecraft PvP Client Spiele- und Multimedia-Programmierung 21
T Hilfe beim Platzieren der Schiffe Spiele- und Multimedia-Programmierung 14
M Brauche Hilfe was zu Programmieren Spiele- und Multimedia-Programmierung 4
P Snake Java Hilfe Spiele- und Multimedia-Programmierung 4
RalleYTN Brauche Hilfe beim Einlesen von PNGs Spiele- und Multimedia-Programmierung 14
P Hilfe für Seminar Arbeit Spiele- und Multimedia-Programmierung 9
T Pong Hilfe bei einer Website Spiele- und Multimedia-Programmierung 4
T Hilfe bei decompilen von Plugin Spiele- und Multimedia-Programmierung 6
E Brauche Hilfe was soll ich tun Spiele- und Multimedia-Programmierung 7
B HILFE bei Spieleprogrammierung mit Slick2D Spiele- und Multimedia-Programmierung 9
S Würfelspiel; Hilfe Spiele- und Multimedia-Programmierung 3
M Hilfe bei vier gewinnt Spiele- und Multimedia-Programmierung 4
S Hilfe bei Java Gui Spiele- und Multimedia-Programmierung 2
C Visual Story programieren/hilfe Spiele- und Multimedia-Programmierung 5
L Hilfe: Moog VCF Diskretisierungs Algorithmen (Smith/Stilson u.A.) Spiele- und Multimedia-Programmierung 0
J Spielfiguren laufen lassen auf einer html Tabelle mit Hilfe von Servlets Spiele- und Multimedia-Programmierung 2
M Hilfe bei Snake Spiele- und Multimedia-Programmierung 4
T Hintergrundmusik eines Spiels mit Hilfe von JLayer Spiele- und Multimedia-Programmierung 12
S 2D mit Slick - Anfänger sucht Hilfe Spiele- und Multimedia-Programmierung 4
C Generelle Hilfe zur lwjgl Spiele- und Multimedia-Programmierung 0
J Hilfe bei Fußballmanager Spiele- und Multimedia-Programmierung 0
C Hilfe bei einem Mosaikspiel Spiele- und Multimedia-Programmierung 16
J Java Steuerberechnung hilfe Spiele- und Multimedia-Programmierung 17
U Hilfe bei Implementierung eines PointSounds in Java3D Spiele- und Multimedia-Programmierung 1
E Hilfe bei Labyrinth Programmierung. Spiele- und Multimedia-Programmierung 9
S Hilfe bei Spiel Spiele- und Multimedia-Programmierung 6
T Aim-Hilfe Spiele- und Multimedia-Programmierung 4
S Shiritori / word chain / Wörterkette Hilfe Spiele- und Multimedia-Programmierung 1
J Hilfe bei mastermind dringend !!!!! Spiele- und Multimedia-Programmierung 3
S Hilfe bei Spielumsetzung Spiele- und Multimedia-Programmierung 6
M Kleines Spongebobspiel / Hilfe gesucht Spiele- und Multimedia-Programmierung 2
L Hilfe bei Entities benötigt Spiele- und Multimedia-Programmierung 6
L Hilfe bei Klassendesign für Spiel Spiele- und Multimedia-Programmierung 2
A Minecraft Hilfe bei Minecraft Mod Spiele- und Multimedia-Programmierung 1
F Einen Sound mit veränderter Tonhöhe und Geschwindigkeit abspielen - Hilfe erbeten Spiele- und Multimedia-Programmierung 29
V Keine Ahnung von OpenGL! Hilfe wäre lieb! Spiele- und Multimedia-Programmierung 8
L Minecraft Minecraft Bukkit Plugin hilfe Spiele- und Multimedia-Programmierung 9
E Hilfe bei Highscore programmierung Spiele- und Multimedia-Programmierung 3
G Acht-Damen-Problem HILFE! Spiele- und Multimedia-Programmierung 11
R Hilfe bei Snake-Programmierung Spiele- und Multimedia-Programmierung 6
B Hilfe bei Minecraft Plugin Spiele- und Multimedia-Programmierung 3
C Java Brauche Hilfe Spiele- und Multimedia-Programmierung 5
M Hilfe bei Spiel Programmierung Spiele- und Multimedia-Programmierung 4
B Hilfe bei GameGrid Spiele- und Multimedia-Programmierung 11
J Spiel mit Java SWING, LWJGL und JMonkey [Anfänger braucht Hilfe] Spiele- und Multimedia-Programmierung 10
N Hilfe bei Tower Defense Spiele- und Multimedia-Programmierung 22
R hilfe bei 2DSpiel. Spiele- und Multimedia-Programmierung 3
S AirHockey Kollisionsprobleme, bitte um Hilfe Spiele- und Multimedia-Programmierung 2
L Abfrage-Fehler? - Hilfe bei Tetris Spiele- und Multimedia-Programmierung 9
R Hilfe bei Reversi/Othello Spiele- und Multimedia-Programmierung 6
J Hilfe: Rotation X und Y Achse (Java3d) Spiele- und Multimedia-Programmierung 12
B Hilfe bekomme den IF befehl nicht hin Spiele- und Multimedia-Programmierung 10
C RFID Überwachung - Hilfe Spiele- und Multimedia-Programmierung 3
javajavajava Java Lotto Zahl 6 aus 49 - Brauche Hilfe Spiele- und Multimedia-Programmierung 3
radiac FullScreenExlusiveMode HILFE!!! Spiele- und Multimedia-Programmierung 6
E TetrisApplet Thread Hilfe Spiele- und Multimedia-Programmierung 6
H PingPong HILFE !!! Spiele- und Multimedia-Programmierung 3
G GO-Spiel in Java noch fehlerhaft hoffe um hilfe Spiele- und Multimedia-Programmierung 7
N Brauche Hilfe bei kleinem Spiel Spiele- und Multimedia-Programmierung 40
N In einem Kasten springende Bälle programmieren...Hilfe Spiele- und Multimedia-Programmierung 7
L Brauche hilfe mit KeyEvent Spiele- und Multimedia-Programmierung 4
B brauche hilfe bei der tastenzuodnung Spiele- und Multimedia-Programmierung 3
E Hilfe bei einer GUI Programmierung mit Graph Spiele- und Multimedia-Programmierung 30
H Decke zeichnen mit Hilfe eines Polygons Spiele- und Multimedia-Programmierung 2
W Hilfe bei Pong mit Bluej Spiele- und Multimedia-Programmierung 4
A Hilfe bei der Methode COLOR (Java) Spiele- und Multimedia-Programmierung 10
S Hilfe: Ich sehe durch die ganze Api's nicht mehr durch! Spiele- und Multimedia-Programmierung 15
N Hilfe bei snake Spiele- und Multimedia-Programmierung 37
T Bitte um Hilfe bei Animationen Spiele- und Multimedia-Programmierung 10
G Fragespiel, Hilfe ! like Wer wird Millinär Spiele- und Multimedia-Programmierung 12
D Hilfe mit mini-spiel für die Schule. Spiele- und Multimedia-Programmierung 1
F Brauche Hilfe bei Bewegung eines Rechtecks [Applet] Spiele- und Multimedia-Programmierung 5
G Hilfe bei 3Gewinnt! Spiele- und Multimedia-Programmierung 2
C anfänger braucht hilfe für info unterricht Spiele- und Multimedia-Programmierung 21
A Hilfe bei Programmierung von Abalone Spiele- und Multimedia-Programmierung 6
S Hilfe bei Galgenmännchen Spiele- und Multimedia-Programmierung 4
M 'Mensch ärgere Dich nicht' - Hilfe! Spiele- und Multimedia-Programmierung 12
K Hilfe bei Grafikeinbindung in einem Spiel Spiele- und Multimedia-Programmierung 6
H Ich benötige Hilfe [Noob] Spiele- und Multimedia-Programmierung 9
R Probleme mit Sound in Applikation. HILFE Spiele- und Multimedia-Programmierung 5
B Hilfe gesucht!! (bewegen von grafischen Objekten) Spiele- und Multimedia-Programmierung 3
wolfgang63 Einfachen Soundgenerator programmieren Spiele- und Multimedia-Programmierung 1
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

Ähnliche Java Themen

Neue Themen


Oben