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:
Frame:
Game:
Button:
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: