|
Verfasser |
Nachricht |
mipez
Halbprofi
Beiträge: 190
Gruppe: User
Registriert seit: Dec 2010
Status:
Offline
Danke erhalten: 88
|
SetBackColor & Schleifenproblem
Bis jetzt wurde mir hier ja sehr gut geholfen, tolle Commi ;D
int main() {
pspDebugScreenInit();
SetupCallbacks();
int i=0;
int chars[]={66,65,75,65};
int posx[]={25,50,30,208};
int posy[]={20,65,75,65};
SceCtrlData pad;
pspDebugScreenSetBackColor(0xffff96ff);
printf("Use [X] to draw a char, [O] to exit");
while(1) {
sceCtrlReadBufferPositive(&pad, 1);
if(pad.Buttons & PSP_CTRL_CROSS){
pspDebugScreenPutChar(posx[i], posy[i], 0xffffffc8, chars[i]);
sceKernelDelayThread( 250 * 1000 );
i++;
if(i = 4){
i=0;
}
}
if(pad.Buttons & PSP_CTRL_CIRCLE){
sceKernelExitGame();
}
}
1. Problem:
Manchmal wird der gesamte Hintergrund eingefärbt, manchmal nicht.
2. Problem:
Nach dem 1. Buchstaben hört es auf, also es funzt alles, nur die Funktion für den Button nicht.
Und ich hab keine For Schleife genommen, weil ich immer nur 1 Buchstaben auf Knopfdruck angezeigt haben will.
Ach ja, gibt es in den includes vom pspsdk schon eine vordefinierte Random Funktion?
Dieser Beitrag wurde zuletzt bearbeitet: 18.02.2011 12:58 von mipez.
|
|
18.02.2011 12:52 |
|
|
|
James_Cutter
TeamCheyTac
Beiträge: 1.084
Gruppe: User
Registriert seit: Jul 2009
Status:
Offline
Danke erhalten: 1055
|
RE: SetBackColor & Schleifenproblem
int main() {
pspDebugScreenInit(); SetupCallbacks(); int i=0; int chars[]={66,65,75,65}; int posx[]={25,50,30,208}; int posy[]={20,65,75,65}; SceCtrlData pad;
pspDebugScreenSetBackColor(0xffff96ff);
printf("Use [X] to draw a char, [O] to exit"); while(1) { //hier fehlt noch eine schleife while(i<4) { sceCtrlReadBufferPositive(&pad, 1); if(pad.Buttons & PSP_CTRL_CROSS){ pspDebugScreenPutChar(posx[i], posy[i], 0xffffffc8, chars[i]); sceKernelDelayThread( 250 * 1000 ); i++; if(i = 4){ i=0; } } }
if(pad.Buttons & PSP_CTRL_CIRCLE){ sceKernelExitGame();
} }
Kein Support mehr per PM
|
|
18.02.2011 13:50 |
|
|
|
Dr. Soup
Durchstarter
Beiträge: 58
Gruppe: User
Registriert seit: Mar 2010
Status:
Offline
Danke erhalten: 70
|
RE: SetBackColor & Schleifenproblem
Wenn du den Code genau so benutzt wie du ihn hier gepostet hast, solltest du auf dein IF-Statement achten. Ich denke, du wolltest den logischen gleich-Operatoren (==) benutzen; mit deinem jetzigen Code jedoch, deklarierst du 'i' direkt nach dem Inkrement mit dem Wert 4, wodurch der in den geschweiften Klammern geschriebene Code immer ausgeführt wird (weil 4 größer 0 ist und damit "wahr" ist) und i den Wert 0 hat.
Als PRNG kannst du Mersenne Twister benutzen (mt19937), wozu du psputils.h inkludieren musst.
Dieser Beitrag wurde zuletzt bearbeitet: 18.02.2011 13:55 von Dr. Soup.
|
|
18.02.2011 13:54 |
|
|
|
mipez
Halbprofi
Beiträge: 190
Gruppe: User
Registriert seit: Dec 2010
Status:
Offline
Danke erhalten: 88
|
RE: SetBackColor & Schleifenproblem
int main() {
pspDebugScreenInit();
SetupCallbacks();
int i=0;
int chars[]={66,65,75,65};
int posx[]={25,50,30,208};
int posy[]={20,65,75,65};
SceCtrlData pad;
pspDebugScreenSetBackColor(0xffff96ff);
printf("Use [X] to draw a char, [O] to exit");
while(1) {
sceCtrlReadBufferPositive(&pad, 1);
if(pad.Buttons & PSP_CTRL_CROSS){
pspDebugScreenPutChar(posx[i], posy[i], 0xffffffc8, chars[i]);
sceKernelDelayThread( 250 * 1000 );
i++;
if(i == 4){
i=0;
pspDebugScreenClear();
}
}
if(pad.Buttons & PSP_CTRL_CIRCLE){
sceKernelExitGame();
}
}
}
Jetzt funzt alles soweit, nur füllt sich der komplette Hintergrund erst nach dem die 2. If Abfrage 1x durch ist, vorher ist nur der Hintergrund der Schrift gefüllt.
|
|
18.02.2011 14:13 |
|
|
|
Ceikor
Ex-Developer
Beiträge: 581
Gruppe: User
Registriert seit: Dec 2008
Status:
Abwesend
Danke erhalten: 701
|
RE: SetBackColor & Schleifenproblem
EDIT: Hmmm verstehe dein problem nicht^^
EDIT: Meinst du nachdem diese durch ist?
if(i == 4)
{
i=0;
pspDebugScreenClear();
}
Dieser Beitrag wurde zuletzt bearbeitet: 18.02.2011 15:09 von Ceikor.
|
|
18.02.2011 14:51 |
|
|
|
mipez
Halbprofi
Beiträge: 190
Gruppe: User
Registriert seit: Dec 2010
Status:
Offline
Danke erhalten: 88
|
RE: SetBackColor & Schleifenproblem
Genau.
Erst danach füllt sich der gesamt Hintergrund.
|
|
18.02.2011 15:09 |
|
|
|
Ceikor
Ex-Developer
Beiträge: 581
Gruppe: User
Registriert seit: Dec 2008
Status:
Abwesend
Danke erhalten: 701
|
RE: SetBackColor & Schleifenproblem
Und was sagt dir das ganze? Wenn der Screen erst nach einen bestimmten befehl sich komplett färbt? Das ganze hättest du auch in der Header file nachlesen können.
Sry wenn ich dir nicht gleich die Antwort poste aber ein bischen nachdenken hilft
EDIT:
/**
* Set the background color for the text
* @note To reset the entire screens bg colour you need to call pspDebugScreenClear
*
* @param color - A 32bit RGB colour
*/
void pspDebugScreenSetBackColor(u32 color);
Dieser Beitrag wurde zuletzt bearbeitet: 18.02.2011 15:17 von Ceikor.
|
|
18.02.2011 15:11 |
|
|
|
mipez
Halbprofi
Beiträge: 190
Gruppe: User
Registriert seit: Dec 2010
Status:
Offline
Danke erhalten: 88
|
RE: SetBackColor & Schleifenproblem
Recht merkwürdig, da bei mir nur der Befehl und die Parameter dastehen oô
Aber trotzdem danke.
|
|
18.02.2011 16:08 |
|
|
|
HacKmaN
Ex-Developer
Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009
Status:
Offline
Danke erhalten: 3319
|
RE: SetBackColor & Schleifenproblem
Recht merkwürdig, da bei mir nur der Befehl und die Parameter dastehen oô
Aber trotzdem danke.
Hä? Wo hast du denn nachgeschaut?
|
|
18.02.2011 16:09 |
|
|
|
PSP_Lord
Durchstarter
Beiträge: 87
Gruppe: User
Registriert seit: Sep 2010
Status:
Abwesend
Danke erhalten: 133
|
RE: SetBackColor & Schleifenproblem
Warum benutzen eigentlich viele Leute den Integer Typ für Variablen, deren Werte niemals 255 bzw. -256 übertreffen?
z.B.die Variable int i im obigen code, diese Variable hält maximal fünf verschiedene Werte, {0 - 4}.
Da ist es doch viel sinnvoller, die so zu deklarieren:
unsigned char i; //i kann folgende Werte annehmen (0 - 255). Wer auch negative Zahlen darstellen möchte macht:
char i; //i kann folgende Werte annehmen (-128 bis 127)
Dies spart einfach die Menge des zu reservierenden Speichers und macht den Code professioneller.
Außerdem musst du vor die letzte geschweifte Klammer noch z.B.
return 0; setzen. Deine Methode hat als Rückgabewert einen integer Wert (int main), so dass du auch einen integer Wert wieder returnen musst.
|
|
18.02.2011 16:43 |
|
|
|