Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

21

03.07.2014, 06:34

Kampf gegen Windmühlen...
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

22

03.07.2014, 08:47

Kampf gegen Windmühlen...
Ist das was neues? ;)
Zumal weitere Empfehlungen nicht nötig sind, siehe:
Ich habe mich nun entschieden, mit C++ und SFML weiterzumachen.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

BitShift

Frischling

Beiträge: 39

Wohnort: Leverkusen

Beruf: Informatiker Anwendungsentwicklung

  • Private Nachricht senden

23

03.07.2014, 10:34

Als ich dann beschlossen habe Spiele zu programmieren wollte (und will jetzt auch immer noch) Spiele PROGRAMMIEREN und sie nicht in einem Editor zusammenklicken ;)
Es ist aber nun mal so, dass du damit eigentlich an einem Framework / Engine arbeitest bzw. programmierst, und nur ein Teil tatsächliche Spielelogik darstellt, nämlich ziemlich genau DER Teil, den du z.B. in Unity über Scripts löst, welche Sprache ist dabei vollkommen egal.

Der viel fiesere Teil eines Spieles ist der Content und die letzten 20% Feintuning und Schliff sowie Bugfixing, die 80% deiner Zeit einnehmen werden.

Auf Grund der generellen Beschreibung des TS tendiere ich eher dazu, ein technisches Interesse zu vermuten, und das ist eben eher im Engine / Framework Teil begründet.

Man sieht das auch immer schön daran, dass die meisten Leute drauf los coden ohne mal irgendwelche Skizzen oder Konzepte erstellt zu haben, weil Sie im Grunde viel mehr an der Technik interessiert sind.

Von diesem Standpunkt aus gesehen kann man dem TS kein Unity empfehlen.
java.lang.SignatureMakesNoSenseException: de.signatureHandler.java
caused by: User is too dumb to create a correct signature.

24

03.07.2014, 14:21

Man sieht das auch immer schön daran, dass die meisten Leute drauf los coden ohne mal irgendwelche Skizzen oder Konzepte erstellt zu haben, weil Sie im Grunde viel mehr an der Technik interessiert sind.
Na ja, ich mache mir schon Konzepte. Vielleicht sind sie nicht so ausführlich wie sie sein sollten, aber ich stehe ja noch am Anfang und habe viel zu lernen. Ich zeichne mir einen Screenshot aus dem fertigen Wunschspiel, wie er in etwa aussehen soll, mit den wichtigsten Elementen wie Karte, Spielerfigur und Monster. Ich überlege mir dann, welche Eigenschaften diese Objekte alles haben müssen, was berechnet werden muss, was ich in den Header schreibe etc. Eine Spielerfigur hat zum Beispiel einen Angriffs-und Verteidigungswert, ein Level das diese Basiswerte erhöht, und Erfahrungspunkte die das Level erhöhen. Ein Monster hat Basiswerte und droppt Erfahrungspunkte. Dann brauche ich noch einen Algorithmus, der die Kämpfe berechnet, einen für die Bewegung über die Weltkarte, einen der das zufällige Treffen des Spielers auf Monster bestimmt etc. Gerade kämpfe ich mit den Klassen in C++ und wie ich alles am besten anordne. Der nächste Schritt wäre dann wohl ein Ablaufdiagramm.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »shelley« (03.07.2014, 14:28)


@zimmer

Alter Hase

Beiträge: 1 135

Wohnort: NRW Germany

  • Private Nachricht senden

25

03.07.2014, 14:43

ja das ablaudiagram, besonders beim Questsystam fallen viele Variablen an, finde ich

BitShift

Frischling

Beiträge: 39

Wohnort: Leverkusen

Beruf: Informatiker Anwendungsentwicklung

  • Private Nachricht senden

26

03.07.2014, 14:58

Man sieht das auch immer schön daran, dass die meisten Leute drauf los coden ohne mal irgendwelche Skizzen oder Konzepte erstellt zu haben, weil Sie im Grunde viel mehr an der Technik interessiert sind.
Na ja, ich mache mir schon Konzepte.
Finde ich gut ;)
Wir hätten da auch deutlich mehr machen können / müssen.
Außerdem ist es hilfreich, wenn man genau definiert, welche "Features" in einer Version 1.0 vorkommen sollen, und davon nicht abzuweichen, es sei denn, es ist absolut notwenig.

Milestones sind hilfreich, wenn man sie nicht zu komplex ansetzt.
Aber auch hier sind wir leider viel zu unkonsequent gewesen, vielleicht machst du es ja besser :)
java.lang.SignatureMakesNoSenseException: de.signatureHandler.java
caused by: User is too dumb to create a correct signature.

27

07.07.2014, 01:08

Ich habe mal als erste Übung einen einfachen Algorithmus geschrieben. Er berechnet den Kampf Spieler gegen Monster auf der Basis von festgelegten Werten. Nichts großes, aber das kann ich ja ausbauen, vielleicht wird ein kleines RPG daraus...

Source:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/*  Simple turn-based battle algorithm: player vs. monster

    Written in C++ by Shelley, 07/07/2014, first lesson while learning C++
    Feel free to use this source for whatever you want.

    Contains basic C++:
        # Simple input/output via iostream.h
        # loops (if, else if, while)
        # simple conditions
        # simple math
        # variable declarations

    For more fun:
        # add random attack values
        # more monsters
        # add weapons, armor etc.
        # even more monsters!
*/


#include <iostream>

using namespace std;

int main()

{

// First, some basic stats for player and monster. May become float in the future for more complex stat calculation.
int health_player = 20;
int health_monster = 25;


// These values are constant for further programming, adding weapon bonus, etc.
const  int attack_player = 6;
const  int attack_monster = 5;

// Now, the battle loop.
while (health_monster > 0 && health_player > 0)
        {

            //First, display stats.
            cout << "Health Player:  " << health_player << " \t Attack Strength: " << attack_player << endl;
            cout << "Health Monster: " << health_monster << " \t Attack Strength: " << attack_monster << endl;


            // Implement a routine for turn-based fight.
            char fight;
            cout << "Fight (y)?";
            cin >> fight;
            cout << "" << endl;

            if (fight == 'y')
            {
                health_player = health_player - attack_monster;
                health_monster = health_monster - attack_player;
            }


            // Break if monster or player is killed.
                if (health_monster <= 0)
                    {
                       cout << "You won!" << endl;
                       break;
                    }
                    else if (health_player <= 0)
                    {
                       cout << "You lost!" << endl;
                       break;
                    }


            // Error Message for wrong input.
            else if (fight != 'y')
            {
                 cout << "Invalid key!" << endl;
            }
        }

return 0;
}



Habt ihr Verbesserungsvorschläge oder findet Sachen, die nicht dem Standard entsprechen?

H5::

Treue Seele

Beiträge: 368

Wohnort: Kiel

  • Private Nachricht senden

28

07.07.2014, 08:07

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// {...}
#include <iostream>

int main() {
    using namespace std;
    
    // First, some basic stats for player and monster. May become float in the future for more complex
    // stat calculation.
    int health_player = 20;
    int health_monster = 25;
    // These values are constant for further programming, adding weapon bonus, etc.
    const  int attack_player = 6;
    const  int attack_monster = 5;

    // Now, the battle loop.
    bool fight = true;
    while (fight) {
        //First, display stats.
        cout << "Health Player:  " << health_player << " \t Attack Strength: " << attack_player << endl;
        cout << "Health Monster: " << health_monster << " \t Attack Strength: " << attack_monster << endl;

        // Implement a routine for turn-based fight.
        char key; 
        cout << "Fight (y)?";  cin >> key; cout << endl;
        
        switch (key) {
        case 'Y':
        case 'y':
            health_player = health_player - attack_monster;
            health_monster = health_monster - attack_player;
            break;
        default:
            cout << "Invalid key!" << endl;
            continue;
        }
        
        // Break if monster or player is killed.
        if (health_monster <= 0) {
            cout << "You won!" << endl;
            fight = false;
        } else if (health_player <= 0) {
            cout << "You lost!" << endl;
            fight = false;
        }
    }

    return 0;
}
Also ich habe versucht es ein bisschen anzupassen wie ich es eher machen würde. Ich hab aber versucht auch nicht zu viel anders zu gestalten.
  • Dem Einrücken der Blöcke würde ich mehr Beachtung schenken, dies erhöht die Übersicht stark.
  • Die Klammern habe ich auch anders gesetzt aber das ist wirklich nur eine Geschmackssache.
  • Ich habe die Bedingung deiner while-Schleife etwas verändert. So empfinde ich es als einfacher. (Hab als Namen fight gewählt da es sich ja nur um einen Kampf handelt)
  • Das using namespace setze ich lieber pro Methode, ist aber auch nur meine Art. So bezieht es sich nur auf den jeweiligen Block.
  • Ich hab deine Eingabeauswahl zu einem switch gemacht. Erschien mir passender. Das continue startet einen neuen Eintritt in die while-Schleife. Gibt Leute die würden hiernach noch ein break setzen ist aber sinnlos. Nun wird y und Y berücksichtigt.
Ich glaub, dass was das erste was mir so aufgefallen ist. Ich hoffe auch ich hab nicht zu viel Neues veranstaltet.

Edit: Du kannst im Forum C++ Tags nehmen, dann wird alles schön farbenfroh.
Edit2: Und bei der Eingabe wird der sog. input buffer nicht gelöscht. Deswegen kann man auch yyyyy eingeben und die nachfolgenden abfragen werden damit bestätigt. Aber dies ist ein Thema für sich.
:love: := Go;

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »H5::« (07.07.2014, 08:24)


Werbeanzeige