Chat ingame

TheJavaRazor

Mitglied
Hallo,
wir mussten ein Spiel programmieren nun sollen wir einen Chat einfügen, ich schaffe es leider nur mit einem JOptionPane. Da wir (ich hab unten einen Code geschrieben, damit ihr nicht den ganzen Code vom Game durchforsten müsst) so programmieren müssen, (ohne JComponnent )verstehe ich es nicht wie wir es schaffen sollten. Also die while-Schleife (das Grundgerüst muss bleiben), damit wir lernen mit dem Zeugs umzugehen.

Kann mir einer helfen ?

Main:
Java:
public class Main{
	
	static int breite = 1080;
	static int höhe = 690;
	
	public static void main(String[] args){
		
		Frame f = new Frame();
		f.makescreen(breite, höhe);
		
		long lastFrame = System.currentTimeMillis();
		
		while(true){
			
			long thisFrame = System.currentTimeMillis();
			float delta = (float) ((thisFrame - lastFrame)/1000.0);
			lastFrame = thisFrame;

			
			f.update(delta);
			
			f.repaint();
			
			try
			{
				Thread.sleep (40);
			}catch (Exception e){

			}
		}
	}

}

Frame:

Java:
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.image.BufferStrategy;
import javax.swing.JFrame;

public class Frame extends JFrame{

	private static final long serialVersionUID = 1L;
	
	private BufferStrategy BStrategy;
	private Game game;
	static int insetx;
	static int insety;
	static int drawFrameNr = 0;
	
	public Frame(){
		setTitle("Game");
		setDefaultCloseOperation(3);
		setResizable(false);
		setVisible(true);	
		
		//hier nicht benötigt
//		Keyboard kb = new Keyboard(); 
//		addKeyListener(kb);
//		addMouseMotionListener(kb);
//		addMouseListener(kb);
		
		game = new Game();
	
	}
	
	public void makescreen(int Breite, int Höhe){
		createBufferStrategy(2);
		BStrategy = getBufferStrategy();
		
		Insets i = getInsets();
		insetx= i.left;
		insety= i.top;
		setSize(Breite + insetx + i.right, Höhe + insety + i.bottom);
		setLocationRelativeTo(null);
	}
	
	public void update(float delta){
		switch(drawFrameNr){
			case 0:
				game.update(delta);
				break;
			case 1:
				//gamelevel 2 ...
				break;

			default:
				break;
		}
		
	}
	
	public void repaint(){
		Graphics g = BStrategy.getDrawGraphics();
		draw(g);
		g.dispose();
		BStrategy.show();
	}

	public void draw(Graphics g){
		switch(drawFrameNr)	{
			case 0:
				game.draw(g);
				break;
			case 1:
				
				break;

			default:
				break;
		}
		
	}
	
}

Game:

Java:
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.JOptionPane;
import javax.swing.Spring;




public class Game{
	private Font f;
	private Button[] buttons;
	String eingabe;
	
	public Game(){
		//new Player etc.
		f = new Font("Arial", 0, 20);

		buttons = new Button[1];
		BufferedImage[] Chat =  {Texture.B_Chat, Texture.B_Chat_roll, Texture.B_Chat_press}; //bei Texture lade ich die Images
		
		buttons[0] = new Button(5, 5, Chat, "Chat", f);
	}
	
	public void update(float delta){
		
		for(int i = 0; i < buttons.length; i++){
			if(buttons[i].update()){
				if(i == 0){eingabe = JOptionPane.showInputDialog("Chat:");} [COLOR="#FF0000"]//Das soll ohne [/COLOR]
[COLOR="#FF0000"]//JOptionPane funktionieren[/COLOR]
			}
		}
	}
	
	public void draw(Graphics g){
		
		
		if(eingabe != null){
			g.drawString (eingabe, 5, 300);
		}
		g.setColor (Color.BLUE);
		g.drawRect (0, 0, Main.breite, Main.höhe);
	}
}


Button:

Java:
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.image.BufferedImage;

public class Button
{
	private int x;
	private int y;
	private Font font;
	private FontMetrics fm;
	private String name;
	private BufferedImage[] look;
	private int show;

	public Button(int PosX, int PosY, BufferedImage[] look, String Aufdruck, Font font)
	{
		this.y = PosY;
		this.x = PosX;
		this.name = Aufdruck;
		this.look = look;
		this.font = font;
	}

	public void draw(Graphics g)
	{
		g.setFont(font);
		fm = g.getFontMetrics();
		g.drawImage(look[show], x + Frame.insetx, y + Frame.insety, null);
		g.setColor(Color.BLACK);
		g.drawString(name, x + look[show].getWidth()/2 - fm.stringWidth(name)/2 + Frame.insetx, y+ look[show].getHeight()/2 + font.getSize()/2 + Frame.insety);		
	}

	public boolean update()
	{
		if(Function.getMouseklick() != 1&& show == 2)
		{
			show = 0;
			return true;
		}

		show = 0;
		int mx = Function.getMouseX() - Frame.insetx;
		int my = Function.getMouseY() - Frame.insety;

		if(Function.collisionRectToRect(mx, my, 0, 0, x, y, look[show].getWidth(), look[show].getHeight()))
		{
			if(Function.getMouseklick() == 1)show = 2;
			else show = 1;
		}

		return false;
	}
}
 
Zuletzt bearbeitet:
Was wurde denn gesagt wie ihr den Chat einbauen sollt? Ihr verwendet für das Spiel ja ein JFrame, warum sollt ihr, wenn ihr schon UI habt, nicht mit einer passenden JComponent den Chat aufbauen? Was sind die Bedingungen?
 
Was wurde denn gesagt wie ihr den Chat einbauen sollt? Ihr verwendet für das Spiel ja ein JFrame, warum sollt ihr, wenn ihr schon UI habt, nicht mit einer passenden JComponent den Chat aufbauen? Was sind die Bedingungen?

Vor ca 3 Wochen ca. Erstelle einen Sidescroller (Enemy + da steht halt noch was alles mit rein muss) mit der erlernten Technik ..das ist das mit der while und so (fließt in die Benotung ein)
Am Mittwoch: Integriere in deinem programmierten Spiel einen Chat, der durch einen Button aufgerufen wird das Spiel anhält und im Hintergrund den aktuelle Frame des Spiels anzeigt. Durch betätigen der Enter-Taste oder durch das Klicken eines Buttons "Senden" soll der Text in einer Chat-Box angezeigt werden.
(2 Wochen haben wir Zeit)
 
Zuletzt bearbeitet:

Zurück
Oben