Willkommen |
|
myGully |
|
Links |
|
Forum |
|
|
|
 |
17.08.11, 14:48
|
#1
|
Newbie
Registriert seit: Feb 2010
Beiträge: 66
Bedankt: 34
|
Wie gehts einfacher?
Hi Leute^^
Hab mal wieder eine Frage zum Programmieren in Windows API.
Es geht um folgendes:
Code:
case WM_PAINT:
[...]
else if(iX==168)
{PAINTSTRUCT ps;
HDC hDC;
const char szText[] = "Where shall I head first?^_^";
const char szText1[] = "(Remind the time you need!)";
const char Ent1[] = "\"Sports Center\"";
const char Ent2[] = "Room 2-15";
const char Ent3[] = "School Training Field";
const char Ent4[] = "School basement";
const char Ent1ge[] = "> \"Sports Center\"";
const char Ent2ge[] = "> Room 2-15";
const char Ent3ge[] = "> School Training Field";
const char Ent4ge[] = "> School basement";
hDC = BeginPaint(hwnd, &ps);
{
TextOut(hDC, 180, 20, szText, sizeof(szText) - 1);
{
if(iWahl == 1)
{
if(Frei!=1 && Frei!=12 && Frei!=123 && Frei!=124 && Frei!=13 && Frei!=132 && Frei!=134 && Frei!=14 && Frei!=142 && Frei!=143 && Frei!=21 && Frei!=213 && Frei!=214 && Frei!=231 && Frei!=241 && Frei!=31 && Frei!=312 && Frei!=314 && Frei!=321 && Frei!=341 && Frei!=41 && Frei!=413 && Frei!=412 && Frei!=431 && Frei!=421)
{TextOut(hDC, 200,150, Ent1ge, sizeof(Ent1ge) - 1);}
TextOut(hDC, 100,250, Ent2, sizeof(Ent2) - 1);
TextOut(hDC, 200,350, Ent3, sizeof(Ent3) - 1);
TextOut(hDC, 350,250, Ent4, sizeof(Ent4) - 1);
}
}
if(iWahl == 2)
{
if(Frei!=1 && Frei!=12 && Frei!=123 && Frei!=124 && Frei!=13 && Frei!=132 && Frei!=134 && Frei!=14 && Frei!=142 && Frei!=143 && Frei!=21 && Frei!=213 && Frei!=214 && Frei!=231 && Frei!=241 && Frei!=31 && Frei!=312 && Frei!=314 && Frei!=321 && Frei!=341 && Frei!=41 && Frei!=413 && Frei!=412 && Frei!=431 && Frei!=421)
{TextOut(hDC, 200,150, Ent1, sizeof(Ent1) - 1);}
TextOut(hDC, 100,250, Ent2ge, sizeof(Ent2ge) - 1);
TextOut(hDC, 200,350, Ent3, sizeof(Ent3) - 1);
TextOut(hDC, 350,250, Ent4, sizeof(Ent4) - 1);
}
if(iWahl == 3)
{
if(Frei!=1 && Frei!=12 && Frei!=123 && Frei!=124 && Frei!=13 && Frei!=132 && Frei!=134 && Frei!=14 && Frei!=142 && Frei!=143 && Frei!=21 && Frei!=213 && Frei!=214 && Frei!=231 && Frei!=241 && Frei!=31 && Frei!=312 && Frei!=314 && Frei!=321 && Frei!=341 && Frei!=41 && Frei!=413 && Frei!=412 && Frei!=431 && Frei!=421)
{TextOut(hDC, 200,150, Ent1, sizeof(Ent1) - 1);}
TextOut(hDC, 100,250, Ent2, sizeof(Ent2) - 1);
TextOut(hDC, 200,350, Ent3, sizeof(Ent3) - 1);
TextOut(hDC, 350,250, Ent4ge, sizeof(Ent4ge) - 1);
}
if(iWahl == 4)
{
if(Frei!=1 && Frei!=12 && Frei!=123 && Frei!=124 && Frei!=13 && Frei!=132 && Frei!=134 && Frei!=14 && Frei!=142 && Frei!=143 && Frei!=21 && Frei!=213 && Frei!=214 && Frei!=231 && Frei!=241 && Frei!=31 && Frei!=312 && Frei!=314 && Frei!=321 && Frei!=341 && Frei!=41 && Frei!=413 && Frei!=412 && Frei!=431 && Frei!=421)
{TextOut(hDC, 200,150, Ent1, sizeof(Ent1) - 1);}
TextOut(hDC, 100,250, Ent2, sizeof(Ent2) - 1);
TextOut(hDC, 200,350, Ent3ge, sizeof(Ent3ge) - 1);
TextOut(hDC, 350,250, Ent4, sizeof(Ent4) - 1);
}
}
EndPaint(hwnd, &ps);
}
[...]
Der Nutzer hat 4 Auswahlmöglichkeiten. Mit den Pfeiltasten ändert er int iWahl auf 1, 2, 3 oder 4, damit wird gesteuert, auf welchem Feld er sich befindet. Durch Enter bestätigt er dann die Wahl.
Wenn der Nutzer nun einen Pfad z.B. iWahl=1 wählt, erscheint neuer Text und so.
Später soll er dann wieder auf iX=168 geführt werden. Wenn er dann dort ist, soll die Auswahlmöglichkeit des vorher beschrittenen Weges, im Beispiel jetzt der Weg von iWahl=1, nicht mehr angezeigt werden (Ist noch unvollständig, ich weiß aber das mache ich jetzt erst^^'). Gleichzeitig bekommt die Variable int Frei den Wert von iWahl "hinzugefügt". Im Beispiel wird Frei auf 1 gesetzt. Wenn nun der User den Weg iWahl=3 wählt, wird Frei auf 13 gesetzt, bei Weg iWahl=2, wird Frei auf 12 gesetzt.
Damit ergeben sich 16*4 Möglichkeiten. Damit müsste ich für jeden Fall eine ewig lange if-Bedingung schreiben, was ich gerade auch mache.
Da es nervig ist, andauern wieder diese Fälle abzudecken, wollte ich nachfragen, ob jemand eine einfachere Lösung weiß. Mir will partue nichts einfallen. Wenn ich Zufallszahlen dabei nutze, käme ich ja auf das gleiche raus, oder?
Ich bedanke mich für jede Hilfe^^
MfG,
CJ3
__________________
Es gehört zum Anstand, sich zu bedanken, wenn einem geholfen wurde, also danke liebe Gullianer c:
|
|
|
17.08.11, 23:04
|
#2
|
is poking \\Device\\Beep
Registriert seit: May 2011
Beiträge: 201
Bedankt: 84
|
Also 2 Sachen:
1. Bei sowas am besten immer ein minimalbeispiel mitliefern,anstelle des eigentlichen Codes, denn der hat kein Problem.
Die hälfte des Codes brauchst du also nicht posten.
2.
Zu deinem Problem:
wie wäre es mit dem Testen on nur der aktuellen Position?
Frei wird ja so gesetzt:
Frei *= 10;
Frei +=iWahl;
und dann musst du nur
int betrachten = Frei %10;
setzen und musst dich nur um aktuelle Position kümmern.
Abgesehen davon ist ein int schlecht.
Ein int geht auf einem 32Bit betriebssytem nur bis 2^32 -1 Bit.Das ist eine 10 stellige Zahl.
__________________
Meine Rechtschreibfehler dürft ihr gerne behalten.
------------------------------------------------------------
Füttere keine Trolle!->Also unterstütz auch nicht Appel.
|
|
|
19.08.11, 10:08
|
#3
|
Newbie
Registriert seit: Feb 2010
Beiträge: 66
Bedankt: 34
|
Mmmh.. Damit hätte ich die letzte Zahl, ja, aber sobald dann ein zweites Mal gewählt wird, ergibt sich in Modulo eine 2 und damit wüsste es nicht mehr, dass die erste Wahl wegfällt, sie würde wieder auftauchen, richtig?
Wenn ich allerdings 4 verschiedene benutze müsste es aufgehoben sein...
Danke : DDDD
Für das jetzige Projekt, reicht ein int erstmal aus. Für spätere Projekte werde ich deinen Ratschlag gerne annehmen^^
Danke :3
__________________
Es gehört zum Anstand, sich zu bedanken, wenn einem geholfen wurde, also danke liebe Gullianer c:
|
|
|
19.08.11, 10:50
|
#4
|
is poking \\Device\\Beep
Registriert seit: May 2011
Beiträge: 201
Bedankt: 84
|
Du kannst es natürlich auch nach dem REST prinzip machen.
In dem fall speicherst du keine Zustände deines Clients(GUI) mehr sondern nur noch die Zustände deiner Ressourcen.
Benötigt aber eine zustätzliche Abstraktionsebene in deinem Programm hast aber das Problem der Auswertung, und des Wegfallenden Zustandes nicht mehr.
Denn so wie du das aufgebaut hast, musst du jede auswahl speichern, und alle Schritte nachvollziehen,damit du immer wieder zum aktuellen zustand kommst, ist also ein Designfehler deinerseits.
have fun.
sirleo
__________________
Meine Rechtschreibfehler dürft ihr gerne behalten.
------------------------------------------------------------
Füttere keine Trolle!->Also unterstütz auch nicht Appel.
|
|
|
19.08.11, 18:00
|
#5
|
Newbie
Registriert seit: Feb 2010
Beiträge: 66
Bedankt: 34
|
tut mir leid, ich verstehe kaum ein wort^^"
wikipedia und google spuckt dazu leider auch nichts aus
Nun ja, ich sollte mich etwas mehr einlesen in solche Themen dann
Und ja, mein Design ist schlecht^^'
Dennoch bin ich stolz drauf, da es so ziemlich das erste richtige Projekt von mir ist 
Man lernt schließlich auch mit der Erfahrung : D
__________________
Es gehört zum Anstand, sich zu bedanken, wenn einem geholfen wurde, also danke liebe Gullianer c:
|
|
|
22.08.11, 15:08
|
#6
|
is poking \\Device\\Beep
Registriert seit: May 2011
Beiträge: 201
Bedankt: 84
|
Suche keine 2min:
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
Hier noch ein nettes paper:
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
und noch 2:
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
__________________
Meine Rechtschreibfehler dürft ihr gerne behalten.
------------------------------------------------------------
Füttere keine Trolle!->Also unterstütz auch nicht Appel.
|
|
|
23.08.11, 00:56
|
#7
|
Newbie
Registriert seit: Feb 2010
Beiträge: 66
Bedankt: 34
|
oke, sorry xD
ich hab das iwie für einen diplomatischen Begriff gehalten^^"
nochmal danke 
wenn du mal was brauchen solltest : D
__________________
Es gehört zum Anstand, sich zu bedanken, wenn einem geholfen wurde, also danke liebe Gullianer c:
|
|
|
Forumregeln
|
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:53 Uhr.
().
|