Hallo,
ich programmiere gerade an einem Hangman Spiel. Die Eingabe soll über Pushbuttons mithilfe von GUI Befehlen funktionieren, die angeordnet sind wie eine Bildschirmtastatur.
Ich habe es geschafft, das gesuchte Wort im Hintergrund zu speichern, nur bekomme ich bei der Eingabe über die Buttons nicht weiter.
Wenn ein Button gedrückt wird soll überprüft werden, ob der hinterlegte Buchstabe des Buttons in dem Wort enthalten ist und soll falls enthalten dann in die verschiedenen Editfelder anzeigen werden.
Könnt ihr mir da helfen wie ich da die Callback Funktionen der Buttons programmieren soll? Darf auch gerne über ein zusätzliches Skript laufen.
% den Buchstaben aus dem Button auslesen
letter = get(hObject,'String');
% vergleichen, ob der Buchstabe im Word vorkommt
pos = handles.word==letter
% wenn vorkommt ifany(pos) fprintf('%c Buchstabe kommt %d Mal in diesem Wort', letter, sum(pos)) % buchstaben anzeigen % hier weiß nicht wie du deine Edit-Felder verwaltest, ich würde handles in einem Array sammeln else fprintf('kein %c Buchstabe in diesem Wort', letter) % hangman malen/ update end
Ich möchte ein extra M-Skript haben, damit es übersichtlicher bleibt. In dem extra Skript sollen die Schleifen enthalten sein, die checken ob der Buchstabe enthalten ist.
Ich weiß leider nicht wie ich da ansetzen soll, die Buttoninformation aus value holen, fällt mir noch ein aber dann hörts leider auf.
Wie programmiere ich am besten die Schleifen die die Buttoninfos bekommen und dann verarbeitet. Die Ausgabe soll auf einzelnen Editor Felder für jeden Buchstaben ein Editorfeld (siehe Bild oben) plus die Grafik ausgegeben werden.
Dennys Post hast du gelesen und versucht zu verstehen?
Code:
% den Buchstaben aus dem Button auslesen
letter = get(hObject,'String'); % "Buttoninformation aus value holen"
% vergleichen, ob der Buchstabe im Word vorkommt
pos = handles.word==letter % "checken, ob der Buchstabe enthalten ist" (ohne Schleife, die braucht es nicht)
Deine Frage ist zu allgemein, da kann man nur auf die Getting Started Kapitel in der Matlab Dokumentation verweisen
ich verstehe nicht wozu du Schleifen brauchst,
ist an der Stelle doch gar nicht nötig. Die Handles deiner Editorfelder würde ich in einem Array zusammenfassen (in Opening Fcn), dann läuft alles ohne schleifen ab, siehe dazu das Zusammenspiel in der angehängte Datei von mir.
Hier noch mal die Callback-Funktion zu Verdeutlichung:
Wenn etwas unklar ist dann bitte deutlich fragen, was dir nicht klar ist.
Code:
%-------------------------------------------------------------------------------
%
%-------------------------------------------------------------------------------
function letter_callback(hobj, event)
handles = guidata(hobj);
word = handles.word;
% Buchstaben auslesen
letter = get(hobj, 'String');
% vergleichen ob die Buchstabe in Suchword vorkommt
pos = lower(word) == lower(letter);
% ablegenen in speicher, um später rauszufinden ob das Word erraten wurde
handles.guessedletter = handles.guessedletter | pos;
% wenn Buchstabe in Word vorkommt ifany(pos) % dann anzeigen set(handles.hedit(pos), 'String', letter);
else % sonst die Versuch hochzählen, hangman malen
handles.versuch = handles.versuch + 1;
update_hangman(handles) end
% checken ob gewonnen oder verloren wurde if handles.versuch >= handles.maxAnzVersuch || all(handles.guessedletter)
res = 'You won';
if handles.versuch >= handles.maxAnzVersuch
res = 'You lost';
end
button = questdlg([res , ', do you want start new game?'],...
'Continue Operation','Restart','Close','Restart');
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.