Seite 2 von 3

Verfasst: 23 Mai 2005, 01:34
von Clow Leed
Also hier ist das Programm, das später Teil eines ganzen wird.

SIO Reader

Man lese die Liesmich.txt für genaue Infos.

Ich denke mal, den Thread hier können wir mal offen lassen.
Brauche in Zukunft anscheinend noch mehr Hilfe.

Ach ja: Bücher kosten Geld und auf eBooks hab ich keine Lust.
Die ganzen Dokumentationen die _ich_ gefunden hab sind Schrott.

ohoh, Stichwort Bücher - da fällt mir was ein O.o°°

Verfasst: 23 Mai 2005, 09:40
von DragonSlayer
Es ist reines C (C++ = *örk*) für die GBA-Hardware...
darf ich fragen was du da vorhast? :wink:

Verfasst: 23 Mai 2005, 21:23
von Clow Leed
Was ist eigentlich der Unterschied zwischen:

Code: Alles auswählen

if(g_Varia==0)
{
g_Varia2=1;
} else { //<-
if(Varia==1)
{
g_Varia2=0;
}
und

Code: Alles auswählen

if(g_Varia==0)
{
g_Varia2=1;
} else if(Varia==1) //<-
{
g_Varia2=0;
}
? Oder ist das ein-und dasselbe?

Verfasst: 23 Mai 2005, 21:50
von smashIt
abgesehn davon das beim 2. if anscheinend ein g_ fehlt und beim ersten codestück am ende noch ne } hingehört is es das selbe nur anders geschrieben.

wenn g_Varia aber nur 0 und 1 annehmen kann könntest auch das machen:

Code: Alles auswählen

if(g_Varia) g_Varia2=0; 
else g_Varia2=1;
---------------EDIT---------------
mir is grad aufgefallen das g_varia2 1 wird wenn g_varia 0 is und 0 wenn g_Varia 1 is. wennst beide als bool nimmst (diest auf int direkt umsetzen kannst) könntest das machen:

Code: Alles auswählen

g_Varia2 = !g_Varia;
macht aber den code nicht grade lesbarer...

Verfasst: 23 Mai 2005, 22:23
von Clow Leed
Das Problem ist nämlich :

Wenn ich eine IF Schleife mit "Taste A ist gedrückt" mache, und diese
eine Variable mit "g_Varia++" erhöht, wird g_Varia ständig erhöht, wenn man die Taste gedrückt hält.
Also muss ich ne Umweg über verschachtelungen machen.
Und wenn ich auf ELSE schalte geht das los ohne den A-Knopf zu drücken.
Ich hab mittlerweile das hier:

Code: Alles auswählen

//Das prüft das D-PaD
//Wenn D-Pad nach unten gedrückt
    if(F_CTRLINPUT_DOWN_PRESSED)
	{
//Registrier den Tastendruck in  u8 g_KeyDOWN
	    g_KeyDOWN=1;
    } else {
//Wenn Taste losgelassen
    if(g_KeyDOWN==0)
    {
        //Starte ursprüngliche Aktion
       //Wenn g_Cursor kleiner als 10
        if(g_Cursor < 10)
        {
                   Erhöhe um ++
	   g_Cursor++;
	   }
//Wenn g_Cursor auf 10 (Maximum)
	   else if(g_Cursor==10)
	   {
//Setze auf 10
	   g_Cursor=10;
	   }
//resette g_KeyDOWN
	   g_KeyDOWN=0;
//Und starte SelectMenu
	SelectMenu();
	}	
    }
Ähm, hat jemand Optimierungsvorschläge?
Weil wenn ich das so schreibe und
bool g_Keypress=FALSE;
statt
u8 g_KeyDOWN=0;

Code: Alles auswählen

if(F_A)
{
//a
}
else //Dann würde diese ELSE ausgeführt werden, bestimmt
{
//not a
}

if(F_B)
{
//a
}
else //UND diese.
{
//not a
}
Ich könnte auch einzelne void XXX(void) funktionen
machen aber ich hab jetzt schon zuviele...

@Smash:
Daß ein paar sachen fehlen, ist mir auch grad aufgefallen.
Ich hab den Code schnell hingekritzelt, da passiert so was :D

Verfasst: 23 Mai 2005, 22:51
von smashIt
probiers mal damit:

Code: Alles auswählen

//Das prüft das D-PaD
//Wenn D-Pad nach unten gedrückt
if(F_CTRLINPUT_DOWN_PRESSED){
  //Registrier den Tastendruck in  u8 g_KeyDOWN
  g_KeyDOWN=1;
} else {
 //Wenn Taste losgelassen
 if(g_KeyDOWN==1){
  //Starte ursprüngliche Aktion
  //Wenn g_Cursor kleiner als 10
  if(g_Cursor < 10){
   //Erhöhe um ++
   g_Cursor++;
  }
  //Wenn g_Cursor auf 10 (Maximum)
  else if(g_Cursor>=10){
   //Setze auf 10
   g_Cursor=10;
  }
  //resette g_KeyDOWN
  g_KeyDOWN=0;
  //Und starte SelectMenu
  SelectMenu();
 }	
}
beschreib doch bitte mal was der code genau machen soll.
ohne ne genaue beschreibung kann ich da auch nur raten.
zb:
if(g_KeyDOWN==1){
statt
if(g_KeyDOWN==0){
ziemlich am anfang
würd meiner meinung mehr sinn machen, aber ohne beschreibung...

und wegen tippfehler:
ich hab meine java-prüfung richtig altmodisch mit pen'n paper machen müssen. du glaubst garnicht wieviel radierer man in 2 stunden verbrauchen kann :?

Verfasst: 24 Mai 2005, 18:03
von Clow Leed
Na es klappt wie ich das bereits gemacht hab.

Ich hab jetzt ein Problem:

Code: Alles auswählen

bool multi_netready()
{
    if(R_SIOCNT & SIOCNT_NET_READY)
        return TRUE;
    return FALSE;
}
Wie les ich so was aus?
Mit:
if multi_netready(TRUE)
{
//Aktion
}

oder wie? In oberen Fall krieg ich ne Fehlermeldung

Da is der Header in dem das vorkommt:
multiplayer.h

Verfasst: 24 Mai 2005, 18:13
von Panther
if (multi_netready()) {
//Aktion
}

oder ausgeschrieben:

if (multi_netready() == TRUE) {
//Aktion
}

Ließ dochmal wenigstens die ersten paar Kapitel im Buch das ich oben verlinkt habe. Solange du solch einfache Syntaxkonstrukte nicht verstanden hast macht es eigentlich keinen Sinn an einem größeren Programm zu arbeiten.

Verfasst: 24 Mai 2005, 18:29
von Clow Leed
Hey, ich bin grad mit Modem im Netz :D

Arrays kann ich off testen, ich hab da ein paar samples.
ich kann nur noch nicht mit bool arbeiten, deswegen frag ich nach.
Und auf englisch hab ich grad kein Bock...

Wer das aktuelle Projekt haben will (inklusive GBA-prog), PN't mich grad dann lad ichs hoch zum Download.

Verfasst: 24 Mai 2005, 23:17
von smashIt
bitte leg dir ein buch zu, sonst machts keinen sinn
ich würd dir C++. Eine Einführung, von Ulrich Breymann empfehln. is sehr leicht verständlich
und danach kennst dich wenigstens mit den basistypen aus und was man mit denen machen kann.