Pen & Paper - Spielsysteme > Savage Worlds
Savage Worlds Char Generator
Eldrian:
Klingt spannend.
Falls was nutzbares dabei herausfällt: Sehr schön!
Falls nicht, hast du hoffentlich wenigstens Spaß beim basteln gehabt.
Viel Erfolg!
unicum:
Kannst du mal beispielsweise einen Prompt dafür geben was du der KI schreibst das sie dir "Code" liefert?
Thallion:
Klar doch:
--- Zitat ---Bitte korrigiere diesen Code für die Kosten der Ausrüstung.
Wenn ich eine Ausrüstung aktiviere, dann sollen die Kosten der Ausrüstung vom Vermögen abgezogen werden. Das Eingabefeld für das Vermögen, soll sich dann mit dem neuen Wert aktualisieren.
--- Ende Zitat ---
--- Code: ---###
# Funktion zum Hinzufügen der Ausrüstung zum Charakterbogen
def ausruestung_eingabe(tab, kategorie, werte, charakter_daten_values, charakter_daten_selected):
# Initialisiere das Dictionary für die Ausrüstung, falls es noch nicht existiert
if charakter_daten_selected is None:
charakter_daten_selected = {}
for i, (ausruest, details) in enumerate(werte.items()):
# Checkbox für jede Ausrüstung
selected = charakter_daten_selected.get(ausruest, tk.BooleanVar(value=False))
charakter_daten_selected[ausruest] = selected
checkbutton = tk.Checkbutton(tab, text=ausruest, variable=selected)
checkbutton.grid(row=i, column=0)
vermoegen_label = tk.Label(tab, text="Vermögen:")
vermoegen_label.grid(row=len(werte)+1, column=0, sticky='w')
vermoegen_entry = tk.Entry(tab, textvariable=vermoegen)
vermoegen_entry.grid(row=len(werte)+1, column=1, sticky='w')
# Kosten der aktivierten Ausrüstung vom Vermögen abziehen
kosten = liste_ausruestung[ausruest]['Kosten']
if vermoegen.get() >= kosten:
vermoegen.set(vermoegen.get() - kosten)
# Hier würde der Code stehen, um die Ausrüstung zum Charakterbogen hinzuzufügen
messagebox.showinfo("Ausrüstung hinzugefügt", f"{ausruest} wurde zum Charakterbogen hinzugefügt.")
else:
messagebox.showwarning("Nicht genug Gold", "Du hast nicht genug Gold, um diese Ausrüstung zu kaufen.")
# Speichern-Button für Ausrüstung und Vermögen
tk.Button(tab, text="Speichern", command=lambda: speichern(charakter_daten)).grid(row=len(werte)+2, columnspan=2)
###
--- Ende Code ---
--- Zitat ---Copilot
Antworten für Sie werden generiert…
Um den Code für die Kosten der Ausrüstung zu korrigieren, sodass die Kosten beim Aktivieren einer Ausrüstung vom Vermögen abgezogen werden und das Eingabefeld für das Vermögen sich mit dem neuen Wert aktualisiert, kannst du folgende Änderungen vornehmen:
Python
--- Ende Zitat ---
--- Code: ---import tkinter as tk
from tkinter import messagebox
# Globale Variable für das Kapital in Gold
vermoegen = tk.IntVar(value=1000) # Startkapital, anpassen nach Bedarf
# Ausrüstung als Dictionary
liste_ausruestung = {
'Seil': {'Kosten': 300, 'Gewicht': 0},
'Dietrich': {'Kosten': 300, 'Gewicht': 0},
'Lederrüstung': {'Kosten': 300, 'Gewicht': 0},
# ... weitere Ausrüstungsgegenstände
}
# Funktion zum Hinzufügen der Ausrüstung zum Charakterbogen
def ausruestung_eingabe(tab, kategorie, werte, charakter_daten_values, charakter_daten_selected):
# Initialisiere das Dictionary für die Ausrüstung, falls es noch nicht existiert
if charakter_daten_selected is None:
charakter_daten_selected = {}
for i, (ausruest, details) in enumerate(werte.items()):
# Checkbox für jede Ausrüstung
selected = charakter_daten_selected.get(ausruest, tk.BooleanVar(value=False))
charakter_daten_selected[ausruest] = selected
checkbutton = tk.Checkbutton(tab, text=ausruest, variable=selected, command=lambda ausruest=ausruest: ausruestung_kaufen(ausruest))
checkbutton.grid(row=i, column=0)
# Eingabefeld für das Vermögen
vermoegen_label = tk.Label(tab, text="Vermögen:")
vermoegen_label.grid(row=len(werte)+1, column=0, sticky='w')
vermoegen_entry = tk.Entry(tab, textvariable=vermoegen)
vermoegen_entry.grid(row=len(werte)+1, column=1, sticky='w')
# Speichern-Button für Ausrüstung und Vermögen
tk.Button(tab, text="Speichern", command=lambda: speichern(charakter_daten)).grid(row=len(werte)+2, columnspan=2)
def ausruestung_kaufen(ausruest):
kosten = liste_ausruestung[ausruest]['Kosten']
if vermoegen.get() >= kosten and ausruestung_selected[ausruest].get():
vermoegen.set(vermoegen.get() - kosten)
messagebox.showinfo("Ausrüstung hinzugefügt", f"{ausruest} wurde zum Charakterbogen hinzugefügt.")
elif not ausruestung_selected[ausruest].get():
vermoegen.set(vermoegen.get() + kosten)
else:
messagebox.showwarning("Nicht genug Gold", "Du hast nicht genug Gold, um diese Ausrüstung zu kaufen.")
ausruestung_selected[ausruest].set(False)
def speichern(charakter_daten):
# ... (Rest des Codes bleibt unverändert)
--- Ende Code ---
--- Zitat ---KI-generierter Code. Überprüfen und sorgfältig verwenden. Weitere Informationen zu häufig gestellten Fragen.
In diesem Code wird eine neue Funktion ausruestung_kaufen definiert, die aufgerufen wird, wenn eine Checkbox für einen Ausrüstungsgegenstand aktiviert oder deaktiviert wird. Diese Funktion überprüft, ob genügend Vermögen vorhanden ist, um den Gegenstand zu kaufen, und zieht die Kosten vom Vermögen ab oder fügt sie hinzu, je nachdem, ob die Checkbox aktiviert oder deaktiviert wird. Das Eingabefeld für das Vermögen wird automatisch aktualisiert, da es an die vermoegen-Variable gebunden ist.
Stelle sicher, dass du die messagebox-Bibliothek importierst, um Benachrichtigungen anzeigen zu können. Füge diesen Code in dein Programm ein und passe ihn entsprechend an deine Bedürfnisse an. Wenn du weitere Hilfe benötigst oder spezifische Funktionen hinzufügen möchtest, stehe ich dir gerne zur Verfügung!
--- Ende Zitat ---
0_3_3: Vermögen + Kauf von Ausrüstung implementiert
Thallion:
Bogen aufgehübscht
sma:
Ich möchte den Thread in hijacken aber kurz off-topic anmerken, dass überrascht bin, wie gut ChatGPT im letzten haben Jahr geworden ist.
Ich hatte das eigentlich für Reddit geschrieben und wollte mit diesem Beispiel ursprünglich "beweisen", dass das alles nicht geht. Doch es ging und ich habe einen rudimentären Charaktergenerator (allerdings nicht -editor) für Mausritter bekommen und bis auf einen Fehler am Anfang war der Quelltext korrekt. Vor wenigen Wochen war das noch undenkbar. Der Code ist schlecht und ich würde niemanden einstellen, der diese Qualität fabriziert, aber wenn man's selbst gar nicht kann, ist das natürlich schon krass hilfreich.
der leider unformatierte Chatverlauf, weil mit OpenAI nicht erlaubt, einen Chat mit Bildern drin zu teilen.
Vielleicht willst du ja statt Python mit dem doch sehr antiquierten Tk noch mal was anderes ausprobieren :)
Ich habe gerade mal ChatGPT gefragt und es hat mir "streamlit" als moderne React-inspirierte webbasierte Lösung empfohlen. Kenn ich überhaupt nicht, aber die AI konnte mir ein Beispiel generieren, um in einem Mausritter-Charaktereditor die Attributwerte mit + und - zu verändern und das Code sieht plausibel aus. Mit einigen Nachfragen, wo ich fand, dass der Code inkonsequent war, hat es dann noch Korrekturen vorgenommen und innerhalb von 5 min hatte ich etwas, das durchaus funktionieren könnte.
(Klicke zum Anzeigen/Verstecken)# Funktion zum Erstellen eines neuen Charakters
def create_character():
st.session_state.characters({
'id': len(st.session_state.characters),
...
})
Hier macht ChatGPT allerdings einen Anfängerfehler, der zu doppelt vergebenen IDs führen wird.
Abschließend würde ich dir empfehlen, der AI zu sagen, sie soll nicht Modell und UI vermischen. Das geht auch in Python besser. MVVM wurde für solche Fälle erfunden. Sag, du willst, dass sie DDD befolgt. Das müsste sie verstehen. In dem Beispiel, das du gepostet hat, hielt sie den Zustand deiner Anwendung im UI fest. Das ist eigentlich ein No-go. Außerdem sollte sie einbauen, wie man das Modell speichert und wieder lädt. Finde ich einen wichtigeren Schritt als jetzt etwas anzuzeigen.
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln