ManaWar

[QUOTE=IDC]Ganz nett, wirklich :wink:
Ich finde die Idee der verschiedenen Skills ganz gut! Ich würde das Allerdings nicht mit drei verschiedenen Tasten für drei verschiedene Skills arbeiten, sondern stattdessen eine Art Inventar implementieren! Geschmacksache…
Verschiedene Maps sind natürlich auch schön. Sowie du das umsetzt ist das allerdings sehr unvariabel und macht einen map creator auch sehr schwierig!!
Noch lässt sich das Spiel auch sehr schwer spielen, da die Charaktere etwas zu langsam unterwegs sind.
Und wo ich mich noch gefragt ob das Absicht ist:
Der schwarz-rote Hampelman springt bei mir vom Boden bis fast an den obersten Spielfeldrand und das erschien mir etwas komisch!

EDIT:
Ach ja, wieso heißen die .class dateien a-,b-,c-,d.class und A-,B-,C-,D.class???[/QUOTE]

Erstmal Danke fürs Austesten :slight_smile:
Wie würde denn dein Skill Inventar aussehen?
Ich habe noch geplant in den Einstellungen jedem Nutzer zu erlauben eigene Tasten festzulegen dann sollten die Skills auch etwas einfacher einsetzbar sein.

Die Geschwindigkeit der Charakter werde ich noch etwas anpassen und die Sprunghöhe von der „Shadow“ Figur ist auch Absicht.
Im Moment ist das in etwa so:
Shadow:

  • Hüpft sehr hoch
  • Ist langsam
  • Mittel-Gute Skills

Flamos:

  • Hüpft sehr niedrig
  • Mittel schnell
  • Gute Skills (Feuerschaden)

Assassine:

  • Hüpft Mittel-hoch
  • Schnell
  • Eher schlechte Skills

Was die Klassen angeht:
Vor einer Weile als ich noch mehr Plugins für Bukkit (Minecraft) geschrieben habe wurden mir einmal ein Plugin „gestohlen“ (also jemand hat es kopiert/bearbeitet und dann als sein eigenes verkauft). Seitdem greife ich auf Programme zurück die meinen Code schützen und die Klassen und Methoden umbenennen.

Kein Problem :wink:

Ich poste mal den Code des Inventar’s das ich für ein eigenes Spiel verwende und passe ihn etwas an:


import game.Settings;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.util.LinkedList;
import listener.InventoryChangedEvent;
import listener.InventoryChangedListener;

public class Inventory {
    private InventoryChangedListener icl = null;
    private LinkedList<Holdable> inventarObjects = new LinkedList<>();
    private int selectedSlot = 0;

    public void setSelectedSlot(int newSelected_Slot) {
        if (newSelected_Slot >= inventarObjects.size()) {
            newSelected_Slot = 0;
        } else if (newSelected_Slot < 0) {
            newSelected_Slot = inventarObjects.size() - 1;
        }
        selectedSlot = newSelected_Slot;
    }
    public int getSelectedSlot() {
        return selectedSlot;
    }

    public Holdable getSelectedObject() {
        if (selectedSlot >= inventarObjects.size()) return null;
        return inventarObjects.get(selectedSlot);
    }
    public void addInventoryObject(Holdable h) {
        inventarObjects.add(h);
        selectedSlot = inventarObjects.size() - 1;
        if (icl != null) icl.inventoryChanged(new InventoryChangedEvent());
    }
    public void removeInventoryObject(Holdable h) {
        inventarObjects.remove(h);
        if (icl != null) icl.inventoryChanged(new InventoryChangedEvent());
    }
    public void removeSelectedInventoryObject() {
        inventarObjects.remove(selectedSlot);
        if (icl != null) icl.inventoryChanged(new InventoryChangedEvent());
    }
    public LinkedList<Holdable> getInventoryObjs() {
        return inventarObjects;
    }

    public void addInventoryChangedListener(InventoryChangedListener icl) {
        this.icl = icl;
    }
    public void removeInventoryChangedListener() {
        this.icl = null;
    }

    public void draw(Graphics g, Point pos, Dimension imageSize) {
        int counter = 0;
        for (Holdable toDraw:inventarObjects) {
            g.drawImage(Image_s.getResizedImage(toDraw.getSlotImage(), imageSize.width, imageSize.height), pos.x+(counter*(imageSize.width+10)), pos.y, null);

            if (counter == selectedSlot) {
                g.fillRect(pos.x+(counter*(imageSize.width+10)), pos.y+imageSize.height, imageSize.width, 4);
            }
            counter++;
        }
    }
}```
Einige Methoden weisen auf andere Klassen hin, aber sie sind doch relativ selbsterklärend ;)
[QUOTE=iFelixxxx;68945]Seitdem greife ich auf Programme zurück die meinen Code schützen und die Klassen und Methoden umbenennen.[/QUOTE]
Naja, wenn dir ein besseres Gefühl gibt...
Das lässt dann auch vermuten das du nicht gewillt bist deinen Source Code mal zu veröffentlichen, damit wir ihn hier mal überprüfen können und vielleicht Tipps geben?!

[QUOTE=IDC]Kein Problem :wink:

Ich poste mal den Code des Inventar’s das ich für ein eigenes Spiel verwende und passe ihn etwas an:


import game.Settings;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.util.LinkedList;
import listener.InventoryChangedEvent;
import listener.InventoryChangedListener;

public class Inventory {
    private InventoryChangedListener icl = null;
    private LinkedList<Holdable> inventarObjects = new LinkedList<>();
    private int selectedSlot = 0;

    public void setSelectedSlot(int newSelected_Slot) {
        if (newSelected_Slot >= inventarObjects.size()) {
            newSelected_Slot = 0;
        } else if (newSelected_Slot < 0) {
            newSelected_Slot = inventarObjects.size() - 1;
        }
        selectedSlot = newSelected_Slot;
    }
    public int getSelectedSlot() {
        return selectedSlot;
    }

    public Holdable getSelectedObject() {
        if (selectedSlot >= inventarObjects.size()) return null;
        return inventarObjects.get(selectedSlot);
    }
    public void addInventoryObject(Holdable h) {
        inventarObjects.add(h);
        selectedSlot = inventarObjects.size() - 1;
        if (icl != null) icl.inventoryChanged(new InventoryChangedEvent());
    }
    public void removeInventoryObject(Holdable h) {
        inventarObjects.remove(h);
        if (icl != null) icl.inventoryChanged(new InventoryChangedEvent());
    }
    public void removeSelectedInventoryObject() {
        inventarObjects.remove(selectedSlot);
        if (icl != null) icl.inventoryChanged(new InventoryChangedEvent());
    }
    public LinkedList<Holdable> getInventoryObjs() {
        return inventarObjects;
    }

    public void addInventoryChangedListener(InventoryChangedListener icl) {
        this.icl = icl;
    }
    public void removeInventoryChangedListener() {
        this.icl = null;
    }

    public void draw(Graphics g, Point pos, Dimension imageSize) {
        int counter = 0;
        for (Holdable toDraw:inventarObjects) {
            g.drawImage(Image_s.getResizedImage(toDraw.getSlotImage(), imageSize.width, imageSize.height), pos.x+(counter*(imageSize.width+10)), pos.y, null);

            if (counter == selectedSlot) {
                g.fillRect(pos.x+(counter*(imageSize.width+10)), pos.y+imageSize.height, imageSize.width, 4);
            }
            counter++;
        }
    }
}```
Einige Methoden weisen auf andere Klassen hin, aber sie sind doch relativ selbsterklärend ;)

Naja, wenn dir ein besseres Gefühl gibt...
Das lässt dann auch vermuten das du nicht gewillt bist deinen Source Code mal zu veröffentlichen, damit wir ihn hier mal überprüfen können und vielleicht Tipps geben?![/QUOTE]

Vielen Dank :) Ich werde mir den Inventar Code genauer ansehen und womöglicherweise sogar Inventare zu ManaWar hinzufügen.

Ich entschuldige mich für die späte Antwort. Aus schultechnischen Gründen habe ich es nicht früher geschafft. Habe gerade ziemlich viel zu tun.


Wegen dem Source Code:
Ich bin momentan noch unsicher:
Auf der einen Seite möchte ich meinen Code schützen, da ich nicht will dass mir nochmal etwas gestohlen wird,
aber auf der anderen Seite ist der Code wirklich nicht so sehr einzigartig und ein durch ein paar Tipps würde ich sicher etwas lernen.

[QUOTE=iFelixxxx]
Ich entschuldige mich für die späte Antwort. Aus schultechnischen Gründen habe ich es nicht früher geschafft. Habe gerade ziemlich viel zu tun.[/QUOTE]
Ich habe FERIEN :wink:
:laola:

Habe eben noch ein kleines Gameplay Video erstellt :slight_smile:

//youtu.be/uvSfB7L9z-Q

In ein paar Tagen wenn der OnlineMode fertig ist lade ich die neue Version hoch.

[QUOTE=iFelixxxx]Habe eben noch ein kleines Gameplay Video erstellt

//youtu.be/uvSfB7L9z-Q

In ein paar Tagen wenn der OnlineMode fertig ist lade ich die neue Version hoch.[/QUOTE]

Das sieht doch schon sehr gut aus.
Mal schauen, wie der Onlinemode aussieht

Mfg Richi

Habe vor ein paar Stunden die neue Version hochgeladen:
ManaWar Downloads

Sie beinhaltet neue Charaktere, einen Netzwerk Modus, neue Skills, kleine Verbesserungen und vieles mehr!


Tip: Press „Z“ while browsing through the Characters to select the hidden „Zrughie“ Character.

Sobald ich die übrigen Fehler behoben habe und Sounds hinzugefügt habe werde ich ManaWar etwas mehr „veröffentlichen“ bzw. zum Download anbieten.
Meldet euch einfach wenn ihr einen Fehler findet :smiley:

Ich würde mich über konstruktive Kritik und Bewertungen freuen :slight_smile:

Die Bilder werden irgendwie nicht mehr angezeigt? Hier sind sie nochmal:

Zweites bild: wie waere es mit transparenten buttons? Einfach die farbe zu (r, g, b, 100) machen :slight_smile: