Java: unter Linux wird das Arbeitsverzeichnis mit root angegeben?

Hallo Community!

Ich habe gerade ein merkwürdiges Problem mit einem Programm, das ich selbst in Java geschrieben habe. Das Programm soll auf eine Datei zugreifen, die sich im aktuellen Arbeitsverzeichnis befindet. Unter einem Linux-System wäre das eigentlich das /home Verzeichnis des aktuellen Users.

Das Merkwürdige ist nur, dass ich plötzlich anstelle des /home Verzeichnisses das Root-Verzeichnis / erhalte, wenn ich mit

System.getProperty("user.dir")

das Arbeitsverzeichnis haben will.

Was ich überhaupt nicht verstehen kann, ist, dass ich beim Debuggen aus Eclipse mein /workspace Verzeichnis unter /home/[MeinUser] erhalte, was richtig ist. Nur wenn ich das Programm als ausführbare .jar-Datei exportiere, erhalte ich stattdessen / als Arbeitsverzeichnis. Und an dem Code, der das Verzeichnis festlegt, habe ich seit längerem nichts geändert. Gestern hat es noch funktioniert.

Liegt das an irgendwelchen Rechten unter meinem Linux-System? Oder wo liegt das Problem? Und wie kann ich es zukünftig vermeiden, dass mein Arbeitsverzeichnis auf / statt auf /home/[MeinUser] zeigt?

Danke schon mal für eure Hilfe!

UPDATE:

Da ich nicht genügend Informationen gegeben hatte, werde ich das jetzt nachholen. Folgendes Problem ergibt sich zusätzlich für mich: ich bin irritiert, da

user.dir

eigentlich das Verzeichnis geben sollte, in dem die .jar-Datei liegt. Nehmen wir mal an, mein Username wäre ri (ich bin nur schreibfaul, daher so kurz). Nehmen wir ferner an, dass das Programm in

/home/ri/Documents/Programs/Java/Hello

liegt und hello.jar heißt. Die Dateien, auf die mein Programm zugreift, liegen in einem Ordner .data (Name geändert). Wenn ich das Programm starte, muss der Dateipfad zu den Dateien

/home/ri/.data

sein, denn sonst erhalte ich eine Exception.

Liegt es vielleicht an meiner Distribution, Linux Mint, dass es immer /home/ri ist? Unter Windows liefert mir user.dir das Verzeichnis, in dem die .jar-Datei liegt, was auch meine eigentliche Absicht ist. Merkwürdig ist, dass das Programm in meinem Eclipse workspace auf das Unterverzeichnis des Projekts zugreift.

Unter Linux Mint war es immer so, dass ich /home/ri als user.dir bekam, nur dieses eine Mal war es stattdessen /.

Ich hoffe, dass ich den Grund für meine Verwirrung jetzt etwas besser beschreiben konnte. Danke noch mal an alle, die bereits erste Lösungsansätze gegeben haben und sorry, dass ich mich vielleicht etwas blöd angestellt habe.

Computer Technik Java Eclipse Technologie Java se Linux Mint 18
3 Antworten
Minecraft Plugins programmieren, Commands mit Leerzeichen?

Hey ich habe eine frage,

Ich versuche jz seid Stunden /hilfe 2 zu erstellen aber ich kriege es überhaupt nicht hin. Kann mir jemmand sagen was daran falsch ist?

Wie man sieht habe ich es bei /Gm... auch nicht geschafft deshalb zsm geschrieben.

package de.Numbix.PluginVersuch.commands;
import org.bukkit.Sound; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player;


public class HilfeCommand implements CommandExecutor {


@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
     if (command.getName().equalsIgnoreCase("hilfe")) {
    if(sender instanceof Player) {      
        Player p = (Player) sender;     
        if(args.length == 0) {
                p.sendMessage("§c-------------------------------");
                p.sendMessage("        §8[§6Num§9tex§8] §7Hilfe: §7Seite 1       ");
                p.sendMessage("§c-------------------------------");
                p.sendMessage("§a/Sturm §c> §7Jetzt wird's Sturmig.");
                p.sendMessage("§a/Sonne §c> §7Jetzt wird's Sonnig.");
                p.sendMessage("§a/Tag §c> §7Bringt Licht in die Welt.");
                p.sendMessage("§a/Nacht §c> §7Bringt Dunkelheit in die Welt.");
                p.sendMessage("§a/Fliegen §9<Name> §c> §7Damit kannst du fliegen.");
                p.sendMessage("§a/Heilen §9<Name> §c> §7Heilt eine Person.");
                p.sendMessage("§a/Sperren §9<Name> §c> §7Heilt eine Person.");
                p.sendMessage("§a/Entsperren §9<Name> §c> §7Heilt eine Person.");
                p.sendMessage("§6/Hilfe §92 §6Für die nächste Seite.");
                p.sendMessage("§c-------------------------------");
                p.playSound(p.getLocation(), Sound.BLOCK_SNOW_PLACE, 1, 1);
                        
                if(args.length ==  0) {
                    if(args[0].equalsIgnoreCase("3")){
                        p.sendMessage("§c-------------------------------");
                        p.sendMessage("        §8[§6Num§9tex§8] §7Hilfe: §7Seite 1       ");
                        p.sendMessage("§c-------------------------------");
                        p.sendMessage("§a/Gm1 §c> §7Damit kommst du in den Kreativ Modus.");
                        p.sendMessage("§a/Gm2 §c> §7Damit kommst du in den Abenteuer Modus.");
                        p.sendMessage("§a/Gm0 §c> §7Damit kommst du in den Überleben Modus.");
                        p.sendMessage("§a/Gm3 §c> §7Damit kommst du in den Zuschauer Modus.");
                        p.sendMessage("§c-------------------------------");
                        
}

} {


} {


{


} } }


} } return false; } }


Computer programmieren Java Minecraft Eclipse Plugin
1 Antwort
Java, Eclipse. Konsolentext in GUI ausgeben?

Ich bin mehr als ein Anfänger. Es ist so, als würde man einem Kindergartenkind das Wurzelrechnen erklären, aber das müsst ihr garnicht, also keine Sorge. Eigendlich möchte ich garkein Programmieren mehr lernen. Ich möchte nur das dieses alte Programm aus ferner Vergangenheit vollständig ist.

Auf jeden Fall, folgendes Szenario:

Ich habe vor mehreren Jahren ein Programm geschrieben in Eclipse. Dieses Programm generiert zufällig Eigenschaften von Menschen z.B. gibt es Größe: klein und Größe: groß und es wird zufällig dazwischen entschieden und eins der Auswahlmöglichkeiten wir dann per System.out.println in der Konsole ausgegeben. Das Ganze läuft mit mehreren Eigenschaften durch, die alle nacheinander in der Konsole ausgegeben werden.

Nun, ich möchte alles, was in der Konsole erscheint in einem GUI ausgeben. JFrame, Textfield... Ich habe ehlich gesagt überhaupt keine Ahnung, was hier Sinn ergibt. Ich möchte nachher eine ausführbare Javadatei haben.

Was ich dafür brauche ist ein GUI, das ich noch nicht erstellt habe, was ich wahrscheinlich alleine auch garnicht vernünftig hinbekomme, und der Code, um in eben jene GUI den Konsolentext auszugeben.

Mein gesamter geschriebener Code ist nur in einer Klasse. Ansonsten habe ich nichts. Das sollte es zumindest etwas einfacher gestalten.

Am liebsten hätte ich einfach einen Code, den ich irgenwo in der selben Klasse einfügen kann und es funktioniert, aber wahrscheinlich ist das Ganze nicht so einfach.

Gibt es jemanden, der wüsste, wie ich meinen Fall so simpel wie möglich umsetzen kann und mir vielleicht sogar den nötigen Code dazu schreiben kann?

Extra: Wäre auch toll, wenn das Programm erst startet, wenn ich auf einen Button klicke und der Text sich an die Größe des Fensters anpasst, aber das ist mir eigendlich nicht wichtig. Hauptsache das Programm startet und der Text wird im Fenster ausgegeben.

Ich bedanke mich ganz herzlich im Voraus!

Computer programmieren Java Eclipse
2 Antworten
Texturen Fehler?

Ich habe folgendes Problem:

Ich programmiere momentan einen Minecraft-Mod. Ich wollte erstmal einfach anfangen und habe einen Block hinzugefügt. Der Blockname funktioniert und der Block ist auch da, aber die Textur will nicht. Es wird nur diese Main Lila-Schwarze Textur angezeigt.

Hier einige extra Infos:

package com.Infinity_Core.main;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.Mod.Metadata;
import cpw.mods.fml.common.ModMetadata;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;
import com.Infinity_Core.blocks.;
import com.Infinity_Core.items.;

@Mod(modid = Infinity_Core.MODID, version = Infinity_Core.VERSION)
public class Infinity_Core
{
   public static final String MODID = "Infinity_Core";
   public static final String VERSION = "Alpha";

   @Metadata
   public static ModMetadata meta;

   public static Block TestBlock;
   int TestBlockID = 500; 

   @EventHandler
   public void init(FMLInitializationEvent event)
   {
      TestBlock = new TestBlock(TestBlockID, Material.rock).setHardness(5.0F).setBlockName("TestBlock").setBlockTextureName("Infinity_Core:TestBlock").setCreativeTab(CreativeTabs.tabDecorations);

    GameRegistry.registerBlock(TestBlock, "TestBlock");   
   }
}

So und die Class-Datei:

package com.Infinity_Core.blocks;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import assets.Infinity_Core.textures.blocks.;

public class TestBlock extends Block
{
   private static Block TestBlock;

   public TestBlock(int id, Material mat)
   {
      super(mat);
      this.setHarvestLevel("pickaxe", 3);
   }
}

Ich nutze Java und Eclipse.

Mods programmieren Java JavaScript Minecraft Eclipse Texturen texturenfehler
2 Antworten
Wie kann ich den Spielern einen Kopf aufsetzen?

	@EventHandler
	public void onClick(InventoryClickEvent e) {


    try {
        Player p = (Player)e.getWhoClicked();
        if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§a§lKöpfe") && e.getCurrentItem().getType() == Material.SKULL_ITEM) {
            Inventory inv = Bukkit.createInventory(null, 4*9, "§8» §3§lKöpfe §8«");
            
            ItemStack Kopf1 = new ItemStack(Material.SKULL_ITEM, 1, (byte) 3);
            SkullMeta Kopf1meta = (SkullMeta) Kopf1.getItemMeta();
            Kopf1meta.setOwner("xDrawnGamerHD");
            Kopf1meta.setDisplayName("§aKopf von xDrawnGamerHD");
            ArrayList<String> Kopf1lore = new ArrayList<>();
            Kopf1lore.add("§3➤ §cBester Kopf!");
            Kopf1meta.setLore(Kopf1lore);
            Kopf1.setItemMeta(Kopf1meta);
            
            inv.setItem(10, Kopf1);
            
            p.getPlayer().playSound(p.getPlayer().getLocation(), Sound.CHEST_OPEN, 1F, 1F);
            p.openInventory(inv);
            p.sendMessage(Main.Prefix + "§cDieses Feature ist bald verfügbar.");
        } else {
           return;
        }

        } catch(Exception e0) {
        }
	}

Der Code ist jetzt ziemlich durcheinander, aber eins kann ich euch gut versichern, dass der Code perfekt funktioniert.

Nun habe ich noch das Problem, dass ich nicht weiß wie ich das so machen kann, dass wenn die Spieler auf einen bestimmten Kopf klicken ihn dann auch automatisch aufgesetzt bekommen.

Meine Überlegung war zuerst irgendwas mit (p.setArmor....) ja man merkt das ich noch nicht lange programmiere, genau deswegen Frage ich euch ja ;)!

Computer Technik IT programmieren Java Minecraft Eclipse Technologie hilfe benötigt Spigot 1.8 Spigot Server Spigot Plugin Spiele und Gaming
2 Antworten
Buchstabe aus einer Text Datei zählen und die Anzahl ausgeben in Java/Eclipse?

Hallo an alle Programmierer,

ich habe ein einfaches Programm um eine Text Datei anzulegen in der etwas drinnen steht. In dem Falle einfach "Hallo Welt". (Siehe Quellcode unten)

Ich möchte nun wissen, wie ich es hinbekommen kann, dass in einem anderem Programm diese erstellte Datei geöffnet wird und mir dann den Buchstabel "L" zählt. Spricht bei der erstellten Text Datei mit Inhalt "Hallo Welt" möchte ich als Ausgabe bekommen: "Die Datei enthält 3 mal den Buchstaben "L".

Außerdem versuche ich das Ganze rückwärts auszugeben.

Großen Dank an jede Hilfe.

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class DateiHalloWelt {
   private static final String Filename = "C:\\test\\HalloWelt.txt";
   public static void main(String[] args) {
      BufferedWriter bw = null;
      FileWriter fw = null;
      try {
         String content = "Hallo Welt";
         fw = new FileWriter(Filename);
         bw = new BufferedWriter(fw);
         bw.write(content);
         System.out.println("Die Textdatei wurde erfolgreich in C:\\test erzeugt.");
         }
      catch (IOException e) {
         e.printStackTrace();
         }
      finally {
         try {
            if (bw != null)
               bw.close();
            if (fw != null)
               fw.close();
            }
catch (IOException ex) {
ex.printStackTrace();
         } } }}
Computer programmierer programmieren Java Anwendungsentwicklung Eclipse Informatik Informatiker programmieren lernen Anwendungsentwickler
2 Antworten
Bitte helft mir zu verstehen warum mein Code das macht?

Ich versuche jetzt schon seit Stunden zu verstehen warum mein Code das macht, und habe auch keine Ahnung wie ich das fixen kann. Und zwar versuche ich mit einer for-Schleife ein 4 x 4 Feld aus JButtons zu erzeugen. Das Problem ist, dass jedes mal der letzte Button nicht seine höhe und breite einhält sondern den kompletten Bildschirm bedeckt (s. ganz unten im Code).

Falls ihr wisst woran das liegen könnte und wie ich es fixe, dann schreibts unten rein.

CODE(für eclipse):

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.;

import java.awt.;

public class FENSTER extends JFrame implements ActionListener{

private JButton spielen;

private JButton highscore;

public String name;

public static String title;

public static boolean fenster_b = true;

public static boolean spiel_b = false;

static JButton[] buttons;

public static JFrame spiel;

public static void main(String[] args)

{

Hauptmenu();

}

public static void Hauptmenu()

{

FENSTER fenster = new FENSTER(title);

fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

fenster.setSize(850,850);

fenster.setIconImage(Toolkit.getDefaultToolkit().getImage(FENSTER.class.getResource("/bilder/Icon.jpg")));

fenster.setLocationRelativeTo(null);

fenster.setLayout(null);

fenster.setVisible(fenster_b);

}

public FENSTER(String titel)

{

super(titel);

spielen = new JButton("SPIELEN");

spielen.setBounds(325, 233, 200, 100);

spielen.addActionListener(this);

add(spielen);

highscore = new JButton("BESTENLISTE");

highscore.setBounds(325, 466, 200, 100);

highscore.addActionListener(this);

add(highscore);

}

public void NameEingabe()

{

name = JOptionPane.showInputDialog("Gib hier deinen Nicknamen ein!");

}

public static void SpieleFenster()

{

spiel = new JFrame(); 

spiel.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

spiel.setSize(840, 865);

spiel.setLocationRelativeTo(null);

spiel.setVisible(spiel_b);

drawButtons();

}

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

if (e.getSource() == spielen)

{

NameEingabe();

if(name != null)

{

fenster_b = false;

spiel_b = true;

SpieleFenster();

}

}

if (e.getSource() == highscore)

{

//HighscoreFenster();

}

}

//HIER LIEGT DAS PROBLEM

private static void drawButtons()

{

buttons = new JButton[16];

for(int i = 0; i<16; i++)

{

if(i<4)

{

buttons[i] = new JButton("");

buttons[i].setBounds(i200 +10, 10,200,200);

spiel.add(buttons[i]);

}

else if(i<8)

{

buttons[i] = new JButton("");

buttons[i].setBounds((i-4)200 +10, 210,200,200);

spiel.add(buttons[i]);

}

else if(i<12)

{

buttons[i] = new JButton("");

buttons[i].setBounds((i-8)200 +10, 410,200,200);

spiel.add(buttons[i]);

}

else if(i<15)

{

//BREAK POINT

buttons[i] = new JButton("");

buttons[i].setBounds((i-12)200 +10, 610,200,200);

spiel.add(buttons[i]);

}

}

}

}

Java Eclipse Informatik Swing
2 Antworten
Eclipse Java Socket Anwendung - reader.readline().equals() funktioniert erst nach mehrmaligen eintippen?

Guten Tag,

ich habe ein Problem mit meiner Socket-Anwendung.

Nach der Verbindung via Telnet zu meinem Server soll man ein Passwort eingeben müssen, um sich zu autorisieren. Der Server wartet auf Clients und leitet sie an einen Thread weiter, wo die Übergabe des Passwortes stattfindet. Kommt es nun zur Eingabe des Passwortes (in diesem Fall "a"), zeigt der Server vorerst immer an, dass die Eingabe nicht mit dem Passwort übereinstimmt. Nach dem ich das aber mehrmals eingegeben habe, funktioniert es auf einmal, wobei es das schon beim ersten Mal hätte tun sollen. Es ist sehr seltsam und ich würde mich freuen, wenn mich einer von euch aufklären könnte.

public void listenToClients() {
  while(true) {
    try {
      Socket client = server.accept();
      PrintWriter writer = new PrintWriter(client.getOutputStream());
      BufferedReader eg = new BufferedReader(new InputStreamReader(client.getInputStream()));
      String message;

      Auth(writer, eg, client);
    }
    catch (IOException e) {
      e.printStackTrace();
    }
  }
}
                                            
public void Auth(PrintWriter writer, BufferedReader reader, Socket client) {
  writer.println("Please type in your Password to access the Network!");
  writer.flush();

  Thread auth = new Thread() {
  int trys  = 0;

  @Override
  public void run() {
    String message;
    boolean goon = true;

    try {
      while (goon) {
        message = reader.readLine();

        if (message.equals("a")) {
          writer.println("Right!");
          writer.flush();
          list_clientWriter.add(writer);

          Thread clientThread = new Thread(new ClientHandler(client));
          clientThread.start();

          goon = false;

          currentThread().interrupt();
        }
        else {
          if (trys >= 2) {
            reader.close();
            writer.close();
            client.close();
            goon = false;
            }
            else {
              int verbleiben = 2 - trys;
              writer.println("Wrong: " + verbleiben + " trys left " + message);
              writer.flush();

              trys++;
            }
          }
        }
      }
      catch (IOException e) {
        e.printStackTrace();
        appendTextToConsole("Identification error", LEVEL_ERROR);
      }
    }
  };

  auth.start();
}
Computer Programm programmieren Java Eclipse Reader Socket Sockets BufferedReader eclipse oxygen
3 Antworten
Minecraft Java Plugin 1.12.2 Wo ist der Fehler im Code könnt ihr mir bitte Helfen ^^?

Hey, ich habe neulich erst meinen Computer zu Windows 10 Geupquradet also von win7 zu win10.

Ich habe in diesem Code keinen Fehler gefunden Keine Ahung was das ist guckt ihr bitte mal (Es handelt sich um ein Freeze command (Noch nicht Fertig))

Main:

package de.caps.troll.main;

import org.bukkit.plugin.java.JavaPlugin;

import Cmd.Freeze;

public class Main extends JavaPlugin {     public void OnEnable() {         System.out.println("TrollV1 is ready!");         getCommand("freeze").setExecutor(new Freeze());     }

}

Freeze.java

package Cmd;

import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player;

public class Freeze implements CommandExecutor {

    @Override     public boolean onCommand(CommandSender send, Command block, String labl, String[] args) {         Player player = (Player) send;         if((player.hasPermission("troll.troll.freeze") || (player.hasPermission("troll.troll.*")))) {             if(send instanceof Player) {                 if(args.length == 0) {                     player.sendMessage("§6Troll> §fBitte benutze /freeze [Spieler]");                     player.sendMessage("§6Troll> §fZum unfreezen /unfreeze [Spieler]");                 } else {                     @SuppressWarnings("deprecation")                     Player target = Bukkit.getPlayer(args[0]); {                         player.sendMessage("§6Troll> §fDer Spieler "+target.getName()+" wurde gefreezt!");                         target.setWalkSpeed(0);                     }                 }                              } else {                 System.out.println("Jemand hat einen Fehler erzeugt!");             }                                   } else {             player.sendMessage("§4Unbekannter Befehl!");         }         // TODO Auto-generated method stub         return false;     }

}

plugin.yml

name: TrollV1
version: 1.0
main: de.caps.troll.main.Main
commands:
   freeze:
      description: Friere andere Spieler ein!
Computer programmieren Java Minecraft Eclipse Fehlerbehebung Plugin Fehler im Code Minecraft Plugins programmieren
3 Antworten
toString zum: Eingabewert als ausgeschriebene Ausgabe verwenden?

Keine Ahnung ob das funktioniert aber...

Was ich will:
Ich möchte im Code bei "wert = 5" eine Zahl eingeben von 0 bis 9 . Aktuell steht dort eine 5 drin.
Nun kann ich den Wert mit "to.String" aktuell in dem Falle als 5 ausgeben oder den wert auf z.B. 9 überschreiben. Wie unten in den zwei to.String Zeilen.

Mein Ziel ist es, mit toString , bei "wert = 5 " eine andere Zahl eingeben zu können von 0-9. und als Ausgabe soll dann der eingegebene Wert als ganzes Wort wie zB. "fünf" oder "zehn" ausgegeben werden.
Dabei will ich to.String nutzen. Andere einfache Weisen wie "Case" oder "If" habe ich schon verwendet.

public class TestToString {

public static void main(String args[]) {

 Integer wert;

//Hier bitte den Wert ändern
wert = 5;

//ich weiß nicht wie ich diese Strings in Verbindung mit einem eingegebenen Wert, mit to.String verwenden könnte.

String nichts = "null";
String eins = "eins";
String zwei = "zwei";
String drei = "drei";
String vier = "vier";
String fünf = "fünf";
String sechs = "sechs";
String sieben = "sieben";
String acht = "acht";
String neun = "neun";

        System.out.println("Die eingegebene Zahl lautet: "+ wert.toString()); 

        System.out.println("Die eingegebene Zahl lautet: "+ Integer.toString(9));

     }

   }
Vielen Dank schonmal für eure Hilfe und Lösungen für das Problem ! :)

Computer programmieren Java Eclipse Informatik String programme schreiben programmer Java lernen toString
5 Antworten
Snake in Java: Wie kann ich verhindern, dass der Apfel unter der Schlange spawnt?

Hallo.

Ich habe grade Snake in Java (Eclipse) programmiert und es klappt auch alles einwandfrei.

Jedoch kommt es vor, dass der Apfel manchmal unterhalb der Schlange spawnt, sodass dieser vorerst nicht sichtbar ist.

Hier der Quellcode (Spawn-Methode des Apfels heißt spawnApple()):

// [...]

public class Game extends JPanel implements ActionListener {

  private int width = 900;
  private int height = 900;
  
  private Image snakeTail;
  private Image snakeHead;
  private Image apple;
  
  private int tailAmount = 100;
  private int snakeWidth = 50;
  private int[] snakeX = new int[(width * height) / (snakeWidth * snakeWidth)];
  private int[] snakeY = new int[(width * height) / (snakeWidth * snakeWidth)];

  private int appleX;
  private int appleY;
  private boolean apfelMissplaced = true;
  
  private boolean running;
  
  private int score;
  
  public static int direction;
  
  Timer t;
  
  public Game() {
  
      addKeyListener(new SnakeListener());
      setPreferredSize(new Dimension(width, height));
      setFocusable(true);
      setBackground(Color.DARK_GRAY);
      
      ImageIcon st = new ImageIcon("TAIL.jpg");
      ImageIcon sh = new ImageIcon("HEAD.jpg");
      ImageIcon a = new ImageIcon("YUM.jpg");
  
      snakeTail = st.getImage();
      snakeHead = sh.getImage();
      apple = a.getImage();
  
      for (int i = 0; i < tailAmount; i++) {
        snakeX[i] = 200 - i * 30;
        snakeY[i] = 100;
      }

      running = true;
              
      t = new Timer(100, this);
      t.start();
  
      spawnApple();
  }
  
  @Override
  public void actionPerformed(ActionEvent e) {
  
    if (running) {
      checkApple();
      moveSnake();
      checkDeath();
    }

    repaint();
  }

  // [...]

  public void spawnApple() {
          
    int random;
    random = (int) (Math.random() * 18);
    appleX = random * snakeWidth;
    random = (int) (Math.random() * 18);
    appleY = random * snakeWidth;
  }

  public void checkApple() {

    if (snakeX[0] == appleX && snakeY[0] == appleY) {
      tailAmount++;
      score++;
      spawnApple();
    }
  }

  @Override
  public void paintComponent(Graphics g) {

    super.paintComponent(g);
    
    if (running) {      
      g.drawImage(apple, appleX, appleY, this);
      
      if (apfelMissplaced == false)
        g.drawImage(apple, appleX, appleY, this);
        
      for (int i = 1; i < tailAmount; i++) {
        g.drawImage(snakeTail, snakeX[i], snakeY[i], this);
      }

      g.drawImage(snakeHead, snakeX[0], snakeY[0], this);
      Toolkit.getDefaultToolkit().sync();
    } 
    else {
      Font f = new Font("Calibir", Font.BOLD, 44);
      FontMetrics metrics = getFontMetrics(f);
      g.setFont(f);
      g.setColor(Color.LIGHT_GRAY);
      g.drawString("You Died - Game Over!", (width - metrics.stringWidth("You Died - Game Over!")), height / 2);
      g.drawString("Your Score: " + String.valueOf(score),
        (width - metrics.stringWidth("Your Score: " + String.valueOf(score))), height / 2 + 50);
    }
  }
}

Könntet ihr mir helfen?

Vielen Dank!

Computer programmieren Java Programmierung snake Bug Eclipse bitte helfen Wichtig
1 Antwort
Java: FileWriter - daten in Datei hinzufügen?

Moin,

Das Basteln am Filewriter gelingt mir irgendwie nicht.

Was ich möchte ist,

das 10 Zahlen aus Zahlen1 ,

- nächste Zeile- dann 10 Zahlen aus Zahlen2 ,

(1. schleifen durchlauf zuende.)

- nächste Zeile- dann wieder 10 Zahlen aus Zahlen1 ,

- nächste Zeile- dann wieder 10 Zahlen aus Zahlen2 ,

(2. schleifen durchlauf zuende.)....

in die Textdatei "Test" geschrieben werden.

Vorher befinden sich schleifen, in dem die Filewriter sind, die aber jetzt nicht so relevant sind, aber am Ende der schleife befinden sich die beiden FileWriter.

Das Problem: Es geht darum das die Textdatei immer ersetzt wird, anstatt Dinge hinzuzufügen.

Wer helfen möchte, kann sich eingeladen fühlen :), ich hoffe ich habe das Problem verständlich beschrieben.

Vielen dank und nen entspannten Samstag!

try (FileWriter writer = new FileWriter("G:\Test.txt")) {
    int index = 0;
    for (Integer number : Zahlen1) {
        if (index++ != 0 && index % 10 == 0) {
             writer.write(String.format("%d%n", words));
             continue;
        }
    writer.write(String.format("%d ", number));
    }
} catch (IOException ex) {
    ex.printStackTrace();
}

try (FileWriter writer = new FileWriter("G:\Test.txt")) {
    int index = 0;
    for (Integer number : Zahlen2) {
        if (index++ != 0 && index % 10 == 0) {
             writer.write(String.format("%d%n", number));
             continue;
        }
        writer.write(String.format("%d ", number));
    }
} catch (IOException ex) {
    ex.printStackTrace();
}
Computer programmieren Java Code Eclipse Filewriter
2 Antworten
Wie funktioniert bzw. die Spracheingabe bei Java?

Ich bin neu in Java und hatte mich durch die Tutorials geschaut und habe habe ein kleines Programm geschrieben. Ich habe viele Probleme z.B. das Hintergrundbild zeigt nicht an, die JMenubar kann ich nirgends was auf der Seite etwas ausführen. Und bin noch Anfänger.

Mein Vorhaben ist:

Das man bei der Jmenubar was anklickt ohne das ein neues Fenster angezeigt werden soll. es soll einfach z.B da ein Text stehen und funktionen erhalten. Das Fenster soll ein Sprach input haben, Wo man in der Einstellung am Regler waagerecht die Lautstärke der Aufnahme steuern kann. Die Wörter in umwandelt, wo es weißt, was zu tun ist. (Wie ein Diktat z.B). Bei weiteren Fragen stehe ich euch gern zur verfügung. Es ist mein erstes großes Projekt. Wenn ihr wollt könnt ihr euch darin verewigen. Die Main Klasse und die Gui schreibe ich in den kommi, sonst zu lang der Text.

Ich habe Die Klassen:

  • Main
  • Gui
  • var
  • Label

Die var Klasse:

package pack;

import java.awt.Label; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException;

import javax.imageio.ImageIO; import javax.swing.JFrame;

public class var {

static JFrame jf1;
static int sreenwidth = 800, sreenheight = 500;
static int background = 0;


static Label lbl1;

static BufferedImage ib1;

public var() {
    
    try {
        //Background
        
        ib1 = ImageIO.read(new File("src/rsc/kl.png"));
    }catch (IOException e) {
        e.printStackTrace();
        System.out.println("Bilder konnte nicht geladen werden");
    }
}

}

Im Label Klasse:

package pack;

import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints;

import javax.swing.JLabel;

public class label extends JLabel{ private static final long serialVersionUID =1L;

protected void paintComponent(Graphics g) {
    super.paintComponent(g);

    Graphics2D g2d = (Graphics2D) g;

    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    
    g.drawImage(var.ib1, 0,var.background, 800,500, null);
    
    repaint();
}

Computer Anfänger programmieren Java Eclipse musikprogramm Aufnahmeprogramm
6 Antworten
Flackern bei Java Datei! Wie bekomme ich's weg?

Hallo,

ich programmiere ein Spiel für einen Freund. Ein Weihnachtsspiel. Ja ich weiß, aber bis Weihnachten will ich das Spiel fertig haben. Jetzt habe ich ein Problem!

https://www.youtube.com/watch?v=cBWGNC8Zn0s

In dem Video seht ihr, das meine Datei flackert. Und jetzt?

Ich zeig euch noch den Quellcode, bitte helfen.

Quellcode: Class Weihnachten.jar

--------------------------------------------------------

package Game;

import java.awt.;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import javax.swing.;

public class Weihnachten extends JFrame implements KeyListener, Runnable {

   private Player player = new Player(5,186,this);

   private boolean up, down;

   public Weihnachten(String title) {

      super(title);

      JPanel panel = new JPanel(null);

      panel.setDoubleBuffered(true);

      this.setFocusable(true);

      this.addKeyListener(this);

      setContentPane(panel);

   }

   public void paint(Graphics gr) {

      super.paint(gr);

      gr.drawImage(Toolkit.getDefaultToolkit().getImage("Bildrr/Hintergrund.png"), 0,0,this);

      player.paintPlayer(gr);

   }

   public static void main(String[] args) {

      Weihnachten Game = new Weihnachten("Das Weihnachtsspiel");

      new Thread(Game).start();

      Game.setSize(800, 500);

      Game.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      Game.setVisible(true);

   }

   @Override

   public void keyPressed(KeyEvent e) {

            System.out.println(e.getKeyCode());

      if (e.getKeyCode() == 87) {

         up = true;

         down = false;

      }else if (e.getKeyCode() == 83) {

         up = false;

         down = true;

      }else if (e.getKeyCode() == 27) {

         up = false;

         down = false;

         System.exit(ABORT);

      }

   }

   @Override

   public void keyReleased(KeyEvent e) {

      down = false;

      up = false;

   }

   @Override

   public void keyTyped(KeyEvent e) {

   }

   @Override

   public void run() {

      while(true) {

         if(up) {

            player.moveUp();

         }else if(down) {

            player.moveDown();

         }

         repaint();

         try {

            Thread.sleep(2);

         } catch (InterruptedException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

         }

      }

   }

}

Quellcode: Class: Player.jar

---------------------------------------------------------

package Game;

import java.awt.;

public class Player {

   private int x, y;

   private Component comp;

   public Player(int x, int y, Component comp ) {

      this.x = x;

      this.y = y;

      this.comp = comp;

   }

   public void moveUp() {

      y-=1;

   }

   public void moveDown() {

      y += 1;

   }

   public void paintPlayer(Graphics gr) {

      gr.drawImage(Toolkit.getDefaultToolkit().getImage("Bildrr/Spieler.png"), x, y, comp);

   }

}

Bitte helfen.








































Spiele programmieren Java Eclipse flackern hilfe-gesucht Schnell
2 Antworten
Minecraft plugin geht nicht/ wird nicht erkannt?

Hallo, ich habe ein pl umgeschrieben und nun geht es nicht mehr es wird vom Server[Spigot 1.8.8] nicht erkannt und gibt die Meldung konte das pl im /plugins Ordnet nicht laden.

Hier die classes:

Main:

package me.funserverinfo.main;
import org.bukkit.command.PluginCommand;
import org.bukkit.plugin.java.JavaPlugin;
public class main extends JavaPlugin
{
 public void onEnable()
 {
  getCommand("skype").setExecutor(new CMD_skype());
  getCommand("ts").setExecutor(new CMD_ts());
  getCommand("yt").setExecutor(new CMD_yt());
  getCommand("elite").setExecutor(new CMD_elite());
  getCommand("ultimate").setExecutor(new CMD_ultimate());
  getCommand("titan").setExecutor(new CMD_titan());
  getCommand("legende").setExecutor(new CMD_legende());
  getCommand("help").setExecutor(new CMD_help());
  getCommand("raenge").setExecutor(new CMD_ränge());
  getCommand("suphelp").setExecutor(new CMD_suphelp());
  getCommand("bewerben").setExecutor(new CMD_bewerben());
 }
 public void onDisable()
 {
 }
}

Elite:

package me.funserverinfo.main;
import org.bukkit.Sound;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class CMD_elite
 implements CommandExecutor
{
 public boolean onCommand(CommandSender sender, Command cmd, String arg2, String[] arg3)
 {
  Player p = (Player)sender;
  p.playSound(p.getLocation(), Sound.VILLAGER_HIT, 2.0F, 1.0F);
  p.sendMessage("§8§m=============================");
  p.sendMessage("§8§m");
  p.sendMessage(" §eElite §8- §7LIFETIME");
  p.sendMessage(" §ePreis: §75€ oder 150.000 Coins");
  p.sendMessage(" §eRechte: §73 Homes");
  p.sendMessage("      §7Elite Kit");
  p.sendMessage("      §7/back");
  p.sendMessage("      §7/feed");
  p.sendMessage("      §7/wb");
  p.sendMessage("§8§m");
  p.sendMessage(" §7Wenn du einen Rang kaufen möchtest, dann kontaktiere einen Admin über Skype (/skype)");
  p.sendMessage("§8§m=============================");
  return false;
 }
}

USW....

Ich denke der fehler ist in der main class

Am Rande programmiert mit Java Eclipse...

Server Java Minecraft Eclipse Plugin Script
3 Antworten
Kleines Java Programm (Spielszenario)?

Hallo zusammen.

Ich bitte um nur ernst gemeinte Antworten.

Derzeit beschäftigen wir uns mit einem kleinen Java Project und haben bereits verschiedene Lösungsansätze ausprobiert. U.a. while/ for-Schleifen, Arrays, Listarrays in Kombination mit der Scanner scan = new Scanner Variante, etc. Dennoch sind wir nicht ganz zufrieden, weil wir denken, dass das Programm kürzer ausfallen könnte.

Wir benötigen keine Musterlösung sondern lediglich Ansätze.

Hier zum Sachverhalt: Wir programmieren ein Spielszenario.

Im worst case spielen 60 Teams

 * Maximal 20 Spieler gleichzeitig

 * Mindestens 18 Spieler

 * Jedes Team spielt maximal 2 Runden hintereinander

 * Es sollen nicht immer die gleichen Teams gegeneinander spielen

 * Am Ende sollen alle Teams ungefähr gleich viele Spiele gespielt haben

[[[[[[[[Hier ein weniger guter Ansatz, da sich das Verfahren enorm in die länge zieht und noch nicht mal zu hundert Prozent richtig wäre:

for (int i = 0; i < teams.length; i++) {

    if (teams[i] <= 10 && teams[0] >= 8) {

      System.out.println("Es Spielt Team" + teams);

    } else 

      for (int k = 0; k <= teams.length; k++) {

        if (teams[k] + teams[0] <= 10 && teams[k] + teams[0] >=8) {

          System.out.println("Es spielen Team" + " " + teams[0] + " " + "und"+ " " + teams[k]);

        }

        }

     for (int a =0; a <teams.length; a++) {

     if (teams[i] <=10 && teams[a] >=8) {

     System.out.println("Es spielt Teeam" + teams);

     }

     else 

     for (int b=0; b <teams.length; b++) { UND SO WEITER UND SOFORT]]]]]]]



Für jeden Vorschlag wären wir dankbar, da es zur Zeit ein wenig "stock".

VG

Computer Java Programmierung Array Eclipse Projekt Spiele und Gaming
2 Antworten
eclipse (neon und kepler) startet nicht - logfile?

LOGFILE ECLIPSE KEPLER

!SESSION 2018-03-09 12:01:30.237 -----------------------------------------------

eclipse.buildId=4.3.2.M20140221-1700

java.version=9.0.4

java.vendor=Oracle Corporation

BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE

Framework arguments: -product org.eclipse.epp.package.jee.product

Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product

!ENTRY org.eclipse.osgi 4 0 2018-03-09 12:01:30.749

!MESSAGE Startup error

!STACK 1

java.lang.RuntimeException: Exception in org.eclipse.osgi.framework.internal.core.SystemBundleActivator.start() of bundle org.eclipse.osgi.

at org.eclipse.osgi.framework.internal.core.InternalSystemBundle.resume(InternalSystemBundle.java:233)

at org.eclipse.osgi.framework.internal.core.Framework.launch(Framework.java:656)

at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:275)

at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177)

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.base/java.lang.reflect.Method.invoke(Unknown Source)

at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)

at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)

at org.eclipse.equinox.launcher.Main.run(Main.java:1450)

at org.eclipse.equinox.launcher.Main.main(Main.java:1426)

Caused by: org.osgi.framework.BundleException: Exception in org.eclipse.osgi.framework.internal.core.SystemBundleActivator.start() of bundle org.eclipse.osgi.

at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:734)

at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)

at org.eclipse.osgi.framework.internal.core.InternalSystemBundle.resume(InternalSystemBundle.java:225)

... 11 more

Caused by: java.lang.IllegalStateException: The System Bundle could not be resolved: Missing Constraint: Bundle-RequiredExecutionEnvironment: J2SE-1.5

at org.eclipse.osgi.internal.baseadaptor.BaseStorage.checkSystemState(BaseStorage.java:827)

at org.eclipse.osgi.internal.baseadaptor.BaseStorage.getStateManager(BaseStorage.java:800)

at org.eclipse.osgi.baseadaptor.BaseAdaptor.getState(BaseAdaptor.java:387)

at org.eclipse.osgi.internal.baseadaptor.BaseStorage.frameworkStart(BaseStorage.java:923)

at org.eclipse.osgi.baseadaptor.BaseAdaptor.frameworkStart(BaseAdaptor.java:250)

at org.eclipse.osgi.framework.internal.core.SystemBundleActivator.start(SystemBundleActivator.java:60)

at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)

at java.base/java.security.AccessController.doPrivileged(Native Method)

at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)

... 13 more

Java Eclipse
1 Antwort

Meistgelesene Fragen zum Thema Eclipse + Java

Fertige Jar datei in eclipse öffnen?

2 Antworten

Eclipse Package explorer weg!

2 Antworten

Java Datei in Eclipse öffnen

1 Antwort

Hintergrundbild in JFrame

2 Antworten

Fehlermeldung bei der Ausgabe in Eclipse?

2 Antworten

Eclipse komplett zurücksetzen?

2 Antworten

Wie kann man in Eclipse Potenzen rechnen? (Android App Programmierung)

2 Antworten

Eclipse Problem , hilfe!

2 Antworten

eclipse - Als ausführbare Datei speichern

2 Antworten