Variablen in C - Progger, leiht mir euer Brain

Moderatoren: Asifish, king-pat

Benutzeravatar
Clow Leed
MIA Team Member
MIA Team Member
Beiträge: 2282
Registriert: 16 Dez 2004, 17:54
Spielt gerade: Freedom Wars
Diablo 3
Lieblingsspiel: Zelda: ALttP
Wohnort: Forschungs- und Technologiestadt Karlsruhe

Beitrag 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°°
SEGA? LOL!
Benutzeravatar
DragonSlayer
MIA Team Member
MIA Team Member
Beiträge: 4241
Registriert: 23 Feb 2003, 12:24
Spielt gerade: Life
Lieblingsspiel: Final Fantasy XI
Wohnort: In der Nähe von Stuttgart

Beitrag von DragonSlayer »

Es ist reines C (C++ = *örk*) für die GBA-Hardware...
darf ich fragen was du da vorhast? :wink:
Comedy equals Tragedy plus Time
Benutzeravatar
Clow Leed
MIA Team Member
MIA Team Member
Beiträge: 2282
Registriert: 16 Dez 2004, 17:54
Spielt gerade: Freedom Wars
Diablo 3
Lieblingsspiel: Zelda: ALttP
Wohnort: Forschungs- und Technologiestadt Karlsruhe

Beitrag 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?
SEGA? LOL!
Benutzeravatar
smashIt
MIA V.I.P.
MIA V.I.P.
Beiträge: 253
Registriert: 08 Mär 2003, 19:21
Spielt gerade: PS0
Mass Effect 1
Wohnort: oberösterreich
Kontaktdaten:

Beitrag 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...
Ordnung ist etwas für Kleingeister, das Genie überblickt das Chaos!

Bild
Benutzeravatar
Clow Leed
MIA Team Member
MIA Team Member
Beiträge: 2282
Registriert: 16 Dez 2004, 17:54
Spielt gerade: Freedom Wars
Diablo 3
Lieblingsspiel: Zelda: ALttP
Wohnort: Forschungs- und Technologiestadt Karlsruhe

Beitrag 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
SEGA? LOL!
Benutzeravatar
smashIt
MIA V.I.P.
MIA V.I.P.
Beiträge: 253
Registriert: 08 Mär 2003, 19:21
Spielt gerade: PS0
Mass Effect 1
Wohnort: oberösterreich
Kontaktdaten:

Beitrag 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 :?
Ordnung ist etwas für Kleingeister, das Genie überblickt das Chaos!

Bild
Benutzeravatar
Clow Leed
MIA Team Member
MIA Team Member
Beiträge: 2282
Registriert: 16 Dez 2004, 17:54
Spielt gerade: Freedom Wars
Diablo 3
Lieblingsspiel: Zelda: ALttP
Wohnort: Forschungs- und Technologiestadt Karlsruhe

Beitrag 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
SEGA? LOL!
Benutzeravatar
Panther
MIA Team Member
MIA Team Member
Beiträge: 1064
Registriert: 06 Mai 2003, 22:55
Spielt gerade: FF 14 / PSO2
Lieblingsspiel: Turrican 2
PSO 2 ID: Tia Lapis

Beitrag 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.
PSP2: Panther (Dranix74)
Benutzeravatar
Clow Leed
MIA Team Member
MIA Team Member
Beiträge: 2282
Registriert: 16 Dez 2004, 17:54
Spielt gerade: Freedom Wars
Diablo 3
Lieblingsspiel: Zelda: ALttP
Wohnort: Forschungs- und Technologiestadt Karlsruhe

Beitrag 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.
SEGA? LOL!
Benutzeravatar
smashIt
MIA V.I.P.
MIA V.I.P.
Beiträge: 253
Registriert: 08 Mär 2003, 19:21
Spielt gerade: PS0
Mass Effect 1
Wohnort: oberösterreich
Kontaktdaten:

Beitrag 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.
Ordnung ist etwas für Kleingeister, das Genie überblickt das Chaos!

Bild
Antworten