KINGx - Das inoffizielle PlayStation Forum & News Portal

Normale Version: SetBackColor & Schleifenproblem
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Bis jetzt wurde mir hier ja sehr gut geholfen, tolle Commi ;D

Spoiler: (anzeigen)
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 X 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?

PHP-Code:
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(&amp;pad1);
        if(
pad.Buttons &ampPSP_CTRL_CROSS){
    
        
pspDebugScreenPutChar(posx[i], posy[i], 0xffffffc8chars[i]);
        
sceKernelDelayThread250 1000 ); 
        
i++;
        if(
4){
            
i=0;
        }
      }
    }

    if(
pad.Buttons &ampPSP_CTRL_CIRCLE){
    
sceKernelExitGame();

    }

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.
Spoiler: (anzeigen)
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.
EDIT: Hmmm verstehe dein problem nicht^^

EDIT: Meinst du nachdem diese durch ist?

Code:
if(i == 4)
{
      i=0;
      pspDebugScreenClear();
}

Genau.
Erst danach füllt sich der gesamt Hintergrund.
Und was sagt dir das ganze? Wenn der Screen erst nach einen bestimmten befehl sich komplett färbt?Wink 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 Wink

EDIT:

Code:
/**
  * 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);

Recht merkwürdig, da bei mir nur der Befehl und die Parameter dastehen oô

Aber trotzdem danke.

mipez :
Recht merkwürdig, da bei mir nur der Befehl und die Parameter dastehen oô

Aber trotzdem danke.


Hä? Wo hast du denn nachgeschaut?

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.
Referenz-URLs