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

Martin Mundorf

Treue Seele

  • »Martin Mundorf« ist der Autor dieses Themas

Beiträge: 262

Wohnort: Waldorf, Kr. Ahrweiler

Beruf: Althistoriker

  • Private Nachricht senden

41

20.04.2015, 06:54

hallo zusammen...


ich spiele immer noch mit dem gedanken, den Speichervorgang mit .csv zu bewältigen... da ich mir unter Serialisierung so gut wie nichts drunter vorstellen kann. (ja, es gibt die google-Suche, ich hab im Moment leider viel anderen Kram um die Ohren)

dennoch, bevor ich mich nun an die Umsetzung (und Vertiefung in die Serialisierungsmaterie wage), wollte ich mal meinen Code posten, in der Hoffnung das dieser es etwas klarer macht, um was es eigentlich geht - und die Profis mir hier dann raten, was nun wirklich das beste wäre... :rolleyes:

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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
 Public Shared Sub Speichervorgang()

        Dim SR As String = "\S&R SaveGame\"
        Dim bassi As String = (Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) & SR)
        If IO.Directory.Exists(bassi) Then
            For Each foundFile As String In My.Computer.FileSystem.GetFiles(bassi)
                My.Computer.FileSystem.DeleteFile(foundFile)
            Next
        Else
            IO.Directory.CreateDirectory(bassi)
        End If

        ' generell für die ganze Partie
        IO.Directory.CreateDirectory(bassi)
        IO.File.WriteAllText(bassi & "QUANTITATE" & ".ini", Spielernamen.Count & vbCrLf) ' wieviel Spieler im Spiel
        IO.File.AppendAllText(bassi & "QUANTITATE" & ".ini", Zentrum.turnPlayer & vbCrLf) ' wer ist am zug
        IO.File.AppendAllText(bassi & "QUANTITATE" & ".ini", Zustand.Schwierigkeit & vbCrLf) ' Schwierigkeitsgrad
        IO.File.AppendAllText(bassi & "QUANTITATE" & ".ini", Zustand.Kirmes & vbCrLf) 'was ist Trumpf
        IO.File.AppendAllText(bassi & "QUANTITATE" & ".ini", Zustand.Weihe & vbCrLf) ' was ist Comitatstrumpf
        IO.File.AppendAllText(bassi & "QUANTITATE" & ".ini", meineKarten.RANZ.Text & vbCrLf) ' aktuelle Runde
        IO.File.AppendAllText(bassi & "QUANTITATE" & ".ini", maxrunden & vbCrLf) ' maximale Rundenanzahl
        IO.File.AppendAllText(bassi & "QUANTITATE" & ".ini", meineKarten.MINUTEN.Text & vbCrLf) ' MINUTEN
        IO.File.AppendAllText(bassi & "QUANTITATE" & ".ini", meineKarten.SEKUNDEN.Text & vbCrLf) ' SEKUNDEN
        IO.File.AppendAllText(bassi & "QUANTITATE" & ".ini", Papstkonto & vbCrLf) ' Wieviel wurde an den Papst gespendet
        IO.File.AppendAllText(bassi & "QUANTITATE" & ".ini", meineKarten.teiler & vbCrLf) ' teiler
        IO.File.AppendAllText(bassi & "QUANTITATE" & ".ini", meineKarten.SUMMA & vbCrLf) ' Summa
        If Zentrum.hlp = True Then
            IO.File.AppendAllText(bassi & "QUANTITATE" & ".ini", 1 & vbCrLf) ' Helfer an oder aus
        Else
            IO.File.AppendAllText(bassi & "QUANTITATE" & ".ini", 0 & vbCrLf) ' Helfer an oder aus
        End If
        ' ########### Zustände abfragen und speichern!

        '### visitor abfragen und speichern!

        'If pot = "f11" Then
        '    Zustand.skiffbau = True
        'ElseIf pot = "x450" Then
        '    Zustand.warzpulver = True
        'ElseIf pot = "h2" Then
        '    Zustand.dampfmaschin = True
        'ElseIf pot = "n7" Then
        '    Zustand.diesel = True
        'ElseIf pot = "z20" Then
        '    Zustand.wandewahn = True
        'End If
        ' ################

        For Each Item As String In Zustand.Pool
            IO.File.AppendAllText(bassi & "pool.ini", Item & vbCrLf)
        Next
        For Each Item As String In Zentrum.Schiffsliste
            IO.File.AppendAllText(bassi & "Schiffsliste.ini", Item & vbCrLf)
        Next
        For Each Item As String In Zentrum.Flugliste
            IO.File.AppendAllText(bassi & "Flugliste.ini", Item & vbCrLf)
        Next
        For Each Item As String In Zentrum.Waffenliste
            IO.File.AppendAllText(bassi & "Waffenliste.ini", Item & vbCrLf)
        Next
        For Each Item As String In Zentrum.Personenliste
            IO.File.AppendAllText(bassi & "Personenliste.ini", Item & vbCrLf)
        Next
        For Each Item As String In Zentrum.Zonderliste
            IO.File.AppendAllText(bassi & "Zonderliste.ini", Item & vbCrLf)
        Next



        ' für den individuellen Spieler
        For g = 1 To Spielernamen.Count
            IO.File.WriteAllText(bassi & g & ".ini", g & vbCrLf) ' Spieler ID
            IO.File.AppendAllText(bassi & g & ".ini", Spielernamen(g - 1) & vbCrLf) ' Spielernamen
            IO.File.AppendAllText(bassi & g & ".ini", Zentrum.Label3.Text & vbCrLf) ' aktuelle Runde
            IO.File.AppendAllText(bassi & g & ".ini", maxrunden & vbCrLf) ' maximale Rundenzahl
            IO.File.AppendAllText(bassi & g & ".ini", (Val(Konto(g)) & vbCrLf)) ' Kontostand
            IO.File.AppendAllText(bassi & g & ".ini", (Val(Spendenkonto(g)) & vbCrLf)) 'Spendenkontostand
            IO.File.AppendAllText(bassi & g & ".ini", (Val(Ablasskonto(g)) & vbCrLf)) ' Ablasskontostand

            '### Anzahl der Trumpferfolge und der gewonnenen Schlachten
            If Data("success_S" & g).Count = 0 Then
                IO.File.AppendAllText(bassi & g & ".ini", 0 & vbCrLf)
            Else
                IO.File.AppendAllText(bassi & g & ".ini", (Val(Data("success_S" & g).Count) & vbCrLf))
            End If
            If Data("success_R" & g).Count = 0 Then
                IO.File.AppendAllText(bassi & g & ".ini", 0 & vbCrLf)
            Else
                IO.File.AppendAllText(bassi & g & ".ini", (Val(Data("success_R" & g).Count) & vbCrLf))
            End If
            If Data("success_T" & g).Count = 0 Then
                IO.File.AppendAllText(bassi & g & ".ini", 0 & vbCrLf)
            Else
                IO.File.AppendAllText(bassi & g & ".ini", (Val(Data("success_T" & g).Count) & vbCrLf))
            End If
            If Data("BATTLES" & g).Count = 0 Then
                IO.File.AppendAllText(bassi & g & ".ini", 0 & vbCrLf)
            Else
                IO.File.AppendAllText(bassi & g & ".ini", (Val(Data("BATTLES" & g).Count) & vbCrLf))
            End If

            ' Anuahl der Sporterfolge
            If SPORTS("Radrennen" & g).Count = 0 Then
                IO.File.AppendAllText(bassi & g & ".ini", 0 & vbCrLf)
            Else
                IO.File.AppendAllText(bassi & g & ".ini", (Val(Data("Radrennen" & g).Count) & vbCrLf))
            End If
            If SPORTS("Snooker" & g).Count = 0 Then
                IO.File.AppendAllText(bassi & g & ".ini", 0 & vbCrLf)
            Else
                IO.File.AppendAllText(bassi & g & ".ini", (Val(Data("Snooker" & g).Count) & vbCrLf))
            End If
            If SPORTS("Fußball" & g).Count = 0 Then
                IO.File.AppendAllText(bassi & g & ".ini", 0 & vbCrLf)
            Else
                IO.File.AppendAllText(bassi & g & ".ini", (Val(Data("Fußball" & g).Count) & vbCrLf))
            End If
            If SPORTS("Boxen" & g).Count = 0 Then
                IO.File.AppendAllText(bassi & g & ".ini", 0 & vbCrLf)
            Else
                IO.File.AppendAllText(bassi & g & ".ini", (Val(Data("Boxen" & g).Count) & vbCrLf))
            End If

            ' ### Ende der spieler ini

            '### Karten in den vier Hauptlisten - pro liste eine .ini
            For Each Item As String In Data("mima" + g.ToString)
                IO.File.AppendAllText(bassi & "mima" & (g) & ".ini", Item & vbCrLf)
            Next
            For Each Item As String In Data("migra" + g.ToString)
                IO.File.AppendAllText(bassi & "migra" & (g) & ".ini", Item & vbCrLf)
            Next
            For Each Item As String In Data("minom" + g.ToString)
                IO.File.AppendAllText(bassi & "minom" & (g) & ".ini", Item & vbCrLf)
            Next
            For Each Item As String In Data("minog" + g.ToString)
                IO.File.AppendAllText(bassi & "minog" & (g) & ".ini", Item & vbCrLf)
            Next

            '### Karten in den vier Nebenlisten

            For Each Item As String In Data("Ausmuster" + g.ToString)
                IO.File.AppendAllText(bassi & "Ausmuster" & (g) & ".ini", Item & vbCrLf)
            Next
            For Each Item As String In Data("Sonderliste" + g.ToString)
                IO.File.AppendAllText(bassi & "Sonderliste" & (g) & ".ini", Item & vbCrLf)
            Next
            For Each Item As String In Data("Sonderliste2" + g.ToString)
                IO.File.AppendAllText(bassi & "Sonderliste2" & (g) & ".ini", Item & vbCrLf)
            Next
            For Each Item As String In Data("wuppliste" + g.ToString)
                IO.File.AppendAllText(bassi & "wuppliste" & (g) & ".ini", Item & vbCrLf)
            Next


            ' ### Abspeicherungen der Armeen
            For Each Item As String In FORCES("A" + g.ToString)
                IO.File.AppendAllText(bassi & "A" & (g) & ".ini", Item & vbCrLf)
            Next
            For Each Item As String In FORCES("B" + g.ToString)
                IO.File.AppendAllText(bassi & "B" & (g) & ".ini", Item & vbCrLf)
            Next
            For Each Item As String In FORCES("C" + g.ToString)
                IO.File.AppendAllText(bassi & "C" & (g) & ".ini", Item & vbCrLf)
            Next
            For Each Item As String In FORCES("D" + g.ToString)
                IO.File.AppendAllText(bassi & "D" & (g) & ".ini", Item & vbCrLf)
            Next
            For Each Item As String In FORCES("D" + g.ToString)
                IO.File.AppendAllText(bassi & "D" & (g) & ".ini", Item & vbCrLf)
            Next

        Next


        maestrohilfe.hinweis(48, bassi, Nothing)
    End Sub
"Eine Signatur ist das Buchstaben-Zahlen-Zettelchen unten an ein einem Buch in der Bibliothek!"



was ich zur Zeit ausprobiere: 3rd person Shooter <- hierfür suche ich noch Unterstützung.


"Lehrjahre": Im Lande der Hasen
mein ewiges Spielprojekt "Straights & Rows".
meine Grafiken "ohne Verwendungszweck"

Tobiking

1x Rätselkönig

  • Private Nachricht senden

42

20.04.2015, 10:07

Wenn du Objekte und Listen durchläufst und die Daten raus schreibst, die du später wieder nutzt um die Objekte und Listen wieder zu erzeugen, ist das nichts anderes als Serialisierung (Objekt -> Datenstrom) und Deserialisierung (Datenstrom -> Objekt). Nur machst du es per Hand, obwohl es automatisch geht.

Du brauchst auch nicht viel. Unter https://msdn.microsoft.com/en-us/library/et91as27.aspx Kapitel "Using Serialization to Persist the Object" steht praktisch alles was du brauchst. Das sind 4 Zeilen zum Speichern, 4 Zeilen zum Speichern und die Attribute an den Klassen, die angeben was gespeichert werden soll und was nicht.

Martin Mundorf

Treue Seele

  • »Martin Mundorf« ist der Autor dieses Themas

Beiträge: 262

Wohnort: Waldorf, Kr. Ahrweiler

Beruf: Althistoriker

  • Private Nachricht senden

43

23.11.2016, 20:44

Kompletter Neuanfang mit Unity / C# ???

Hallo zusammen!

ich möchte mein Spiel "Straights & Rows" immer noch richtig umsetzen.
Die Lösung als Windows-Form-Anwendung in Basic ist natürlich sehr hakelig und umständlich, Ressourcenfressend, etc, etc.

nun überlege ich, wie ich das mit Unity und in C# umsetzen kann.
Ich bin, was gezieltes googeln nach Lösungen angeht etwas überfragt, da ich ja kein 3D Spiel machen möchte, sondern am ehesten ein 2D-Spiel - aber die Lösungen im Netz beziehen sich meist auf jump&run, und das ist ja ne gaaanz andere Baustelle.
Und ich fürchte - es wird weder ein 3D noch ein 2D sondern ein "UI"-game (von unity aus betrachtet)

Ich schaffe es zur Zeit nichteinmal, meine Spieledatei-Daten in unity zu laden: eine Menge .txt Dateien.

Ich würde mir - bevor ich mir Gedanken über den Aufbau des Spiele-Interfaces mache, ersteinmal eine variable Möglichkeit wünschen, die es ermöglicht, die Daten (Punktwerte, Name etc.) aus der txt auf den Bildschrim in unity zu holen.
Natürlich gibts in c# ein "readalllines) - nur, während ich in basic den Dateipfad mit "C/: blablabla/ " & VARIABLER STRING & ".txt" raussuchen konnte geht das offenbar in c# nicht.
Also dachte ich, ich erzeuge ein gameObjekt, weise dem ein Script und eine textdatei zu - aber auch das geht nicht...
Hat da jemand einen Lösungsvorschlag?

Es soll also ein script sein, das sowohl die Daten zB der Datei "b12.txt" als auch "f9.txt" anzeigt. Ich hab schon etwas rumprobiert - bislang ohne Erfolg. Wonach muß ich suchen?

bzw. beschreite ich überhaupt den richtigen Weg?
(nochmal zur Erinnerung, damit ihr nicht alle den ganzen Thread nochmal lesen müßt - es geht im Prinzip um Spielkarten, die miteinander verglichen werden, und in verschiedenen Stapeln abgelegt werden. Wenn man das grafisch/spieletechnisch besser umsetzen kann als mit hahnebüchenen Windows-Forms - ich bin um jeden Rat dankbar) ^^
"Eine Signatur ist das Buchstaben-Zahlen-Zettelchen unten an ein einem Buch in der Bibliothek!"



was ich zur Zeit ausprobiere: 3rd person Shooter <- hierfür suche ich noch Unterstützung.


"Lehrjahre": Im Lande der Hasen
mein ewiges Spielprojekt "Straights & Rows".
meine Grafiken "ohne Verwendungszweck"

44

23.11.2016, 21:47

(nochmal zur Erinnerung, damit ihr nicht alle den ganzen Thread nochmal lesen müßt - es geht im Prinzip um Spielkarten, die miteinander verglichen werden, und in verschiedenen Stapeln abgelegt werden.Wenn man das grafisch/spieletechnisch besser umsetzen kann als mit hahnebüchenen Windows-Forms - ich bin um jeden Rat dankbar) ^^


Für solch (damit beziehe ich mich vorallem auf diese Aussage: "es wird weder ein 3D noch ein 2D sondern ein "UI"-game") ein Spiel würde ich elm und chrome dem Windows-Forms vorziehen. Auch Unity kann da nicht mithalten.

45

24.11.2016, 21:45

Hallo Martin,

Irgendwie gefällt mir dein Spiel – das ist so seltsam und skurril das es schon wieder gut ist. Ich mag solche Sachen und es wäre schade wenn nichts daraus wird und ich überlege gerade wie man dich etwas unterstützen könnte?

Du hast schon eine funktionierende Version in VB.NET – was stört dich denn daran oder was würdest du gerne verbessern? Geeignet ist es auf alle Fälle für dein Vorhaben. Ob C++, C# oder VB.NET macht für die Art von Spiel nicht den Unterschied, entscheidend ist das Framework. WinForms reicht hier z.B. und mit GDI kannst du auch die Minispiele realisieren.

Viel mehr fehlt mir die Möglichkeit über Netzwerk/INet zu spielen. Einen Gameserver zu schreiben ist keine einfache Aufgabe (ich könnte es jetzt nicht – oder nur sehr amateurhaft). Das wäre natürlich ein Punkt für Unity. Mir selbst macht jedoch Unity keinen Spaß. Aber es gibt Unity-Foren die wahrscheinlich besser geeignet sind nach einem Partner zu suchen.

Wenn Softwarentwicklung eher ein Mittel zum Zweck ist, warum nicht das Spielprinzip anpassen damit es als Kartenspiel funktioniert? Könnte man nicht die Berechnungen vereinfachen oder das Kartenspiel um andere Elemente erweiteren? Software ist immer viel Arbeit und richtig viel Arbeit ist Software die nicht nach viel Arbeit aussieht. Andererseits hast du auch Talent zur Programmierung wie dein Prototyp zeigt.

Ideal wäre es du findest jemand der bereits Erfahrung hat und dir das umsetzen kann was du dir vorstellst. Die schlechtere Möglichkeit ist erst einmal einen Prototyp oder eine Version zu erstellen die zur Vorführung taugt und als Köder dienen kann um weitere Unterstützung zu bekommen.

Programmieren kann ich dir dein Spiel nicht, dazu fehlt mir die Zeit. Für Unity fehlt mir das Interesse. Einen Server kann ich dir auch nicht schreiben weil ich keine Ahnung habe. Das einzige was ich dir anbieten könnte wäre etwas Unterstützung in bei der Entwicklung der GUI und allgemeinen Programmierung aufbauend auf deinen vorhandenen Prototyp oder bei der Neuentwicklung unter .Net mit WinForms oder WPF. Vernünftiger ist wahrscheinlich trotzdem Unity.

Werbeanzeige