WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Buttoneingabe

 

spyder
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 09.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2013, 12:31     Titel: Buttoneingabe
  Antworten mit Zitat      
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.

Beste Grüße
Spyder

Unbenannt.jpg
 Beschreibung:

Download
 Dateiname:  Unbenannt.jpg
 Dateigröße:  204.25 KB
 Heruntergeladen:  453 mal
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 14.12.2013, 13:33     Titel:
  Antworten mit Zitat      
Hallo
ich würde für die Buttons mit Buchstaben einen gleichen Callback schreiben

in dieser Art:
Code:

function letter_callback(hObject, event, handles)

% den Buchstaben aus dem Button auslesen
letter = get(hObject,'String');

% vergleichen, ob der Buchstabe im Word vorkommt
pos = handles.word==letter

% wenn vorkommt
if any(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
 




für mehr Verständnis schaue Beispiele auf FEX:

http://www.mathworks.com/matlabcent.....7407-classic-hangman-game

% hier flower durch trees z.B. ersetzen
http://www.mathworks.com/matlabcentral/fileexchange/3786-hangman
Private Nachricht senden Benutzer-Profile anzeigen
 
spyder
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 09.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2013, 15:20     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 19.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 14.12.2013, 20:13     Titel:
  Antworten mit Zitat      
Hallo,

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)


Grüße,
Seban
_________________

Richtig fragen
Debugging
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 14.12.2013, 22:48     Titel:
  Antworten mit Zitat      
Hallo

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
if any(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');
   
   %
   if strcmp(button,'Restart')
       handles = init_game(handles);
   elseif strcmp(button,'Close')
     
      close(handles.hfig);
   end% if pressed button Yes or No
   
end




guidata(handles.hfig, handles);
 


hangman.m
 Beschreibung:

Download
 Dateiname:  hangman.m
 Dateigröße:  4.18 KB
 Heruntergeladen:  295 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.