KINGx - Das inoffizielle PlayStation Forum & News Portal

Normale Version: Textposition bestimmen?
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Also, ich wollte nur mal wissen, ob man die position vom Text genau, also mit X und Y, bestimmen kann, oder ob das nur mit sehr, sehr vielen \n und leerzeichen geht? Das wär nämlich echt nervig.
Vielleicht bin ich zu verwöhnt vom DS-Programmieren Rolleyes...
Mit pspDebugScreenSetXY Wink

3m!n
Gibts auch pspDebugScreenClear?
Guten Tag,

ja es gibt auch pspDebugScreenClear.

Code:
pspDebugScreenClear(void)


Ich würde dir mal empfehlen die pspdebug.h durch zu lesen.
Auch Online verfügbar:
Online Version!

MfG

3m!n

http://pspking.de/forum/showthread.php?tid=27623&pid=531399#pid531399

Ich, im anderen Thread :
pspDebugScreenSetXY Wink

Ist aber, soweit ich weiß, nicht in Pixel sondern in in Schriftzeichen... ein Zeichen... ein Zeichen ist in pspDebug (soweit ich mich erinnern kann) 7 mal 8 Pixel groß.

Du kannst also mit

Code:
pspDebugScreenSetXY(x_pos * 7, y_pos * 8);


die genaue Bildschirmposition in Pixel bestimmen.


mfg

alles schön und gut, nur schreibt mein Programm immer mehr Xe, bis der Bildschirm voll ist, dabei sollte man nur das X mit den D-Pad bewegen können:

PHP-Code:
#include <pspkernel.h>
#include <pspdebug.h>
#include <pspctrl.h>

#define printf pspDebugScreenPrintf

/* Define the module info section */
PSP_MODULE_INFO("Zähler"011);

/* Define the main thread's attribute value (optional) */
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER THREAD_ATTR_VFPU);

/* Exit callback */
int exit_callback(int arg1int arg2void *common) {
    
sceKernelExitGame();
    return 
0;
}

/* Callback thread */
int CallbackThread(SceSize argsvoid *argp) {
    
int cbid;

    
cbid sceKernelCreateCallback("Exit Callback"exit_callbackNULL);
    
sceKernelRegisterExitCallback(cbid);

    
sceKernelSleepThreadCB();

    return 
0;
}

/* Sets up the callback thread and returns its thread id */
int SetupCallbacks(void) {
    
int thid 0;

    
thid sceKernelCreateThread("update_thread"CallbackThread0x110xFA000);
    if(
thid >= 0) {
        
sceKernelStartThread(thid00);
    }

    return 
thid;
}

int main()
{
    
pspDebugScreenInit();
    
SetupCallbacks();
    
    
SceCtrlData pad;
    
//sceCtrlReadBufferPositive(&amp;pad, 1); 
    
    
int xy;
    
x=240;
    
y=140;
    
    while(
1) {
        
sceCtrlReadBufferPositive(&amp;pad1);
        
pspDebugScreenSetXY(x,y);
        
printf("X");
        if (
pad.Buttons &ampPSP_CTRL_UP){
            
pspDebugScreenClear();
            
y--;
        } 
        else if (
pad.Buttons &ampPSP_CTRL_DOWN){
            
pspDebugScreenClear();
            
y++;
        } 
        else if (
pad.Buttons &ampPSP_CTRL_LEFT){
            
pspDebugScreenClear();
            
x--;
        } 
        else if (
pad.Buttons &ampPSP_CTRL_RIGHT){
            
pspDebugScreenClear();
            
x++;
        }      
    }

    return 
0;

1. Müsste bei deinen Code das ScreenClear nach dem du die Variable erhöht hast kommen. ^^

2. Mit der Graphics.h kann man den Text mit X,Y Koordinaten ausgeben. Ich finde nur gerade den Link nicht Google einfach danach ok :)

Code:
extern void printTextScreen(int x, int y, const char* text, u32 color);


Das könnte man dann so machen:

Zitat:
int x = 20, y = 20;

...code...

printTextScreen( x, y, "X", 0xFFFFFFFF);

...code...

if(pad.Buttons & PSP_CTRL_UP)
{
x-=4;
clearScreen(0xFF000000);
}

...code...



PS: Und schau mal was Hackman geschrieben hat ^^

Zitat:
PS: Und schau mal was Hackman geschrieben hat ^^

Soll das heißen, man MUSS das mit dem *7 und *8 machen, auch, wenn man die Textposition nicht in Pixel, sondern in Kacheln/Zeichenlänge angeben will? Noidea

vielesysteme :

Zitat:
PS: Und schau mal was Hackman geschrieben hat ^^

Soll das heißen, man MUSS das mit dem *7 und *8 machen, auch, wenn man die Textposition nicht in Pixel, sondern in Kacheln/Zeichenlänge angeben will? Noidea


Ne ^^

Es klappt immer noch nicht.
Scheinbar wird bei jedem Durchlauf der Schleife x erhöht, und nach einiger Zeit dann ist der Bildschrim voll mit Xen. Früher, als ich das mit dem Clear noch nich hatte, wurde, wenn man eine Taste gedrückt hielt, immer abwechselnd mit dem X ein leerzeichen angezeigt, so konnte man schöne Bilder malen ^^
Aber jetzt geht nicht mal mehr das... Irgendwas klappt da nicht, ich dachte, wenn ich ein X ausgebe, dann wird die Position des nächsten Zeichens automatisch um 1 erhöht, drum setz ich die Position für das neue X auf die vorherigen Koordinaten, damit es an der gleichen Stelle erscheint, wie das alte X, aber DAS klappt nicht.
Noidea Noidea Noidea

vielesysteme :
Es klappt immer noch nicht.
Scheinbar wird bei jedem Durchlauf der Schleife x erhöht, und nach einiger Zeit dann ist der Bildschrim voll mit Xen. Früher, als ich das mit dem Clear noch nich hatte, wurde, wenn man eine Taste gedrückt hielt, immer abwechselnd mit dem X ein leerzeichen angezeigt, so konnte man schöne Bilder malen ^^
Aber jetzt geht nicht mal mehr das... Irgendwas klappt da nicht, ich dachte, wenn ich ein X ausgebe, dann wird die Position des nächsten Zeichens automatisch um 1 erhöht, drum setz ich die Position für das neue X auf die vorherigen Koordinaten, damit es an der gleichen Stelle erscheint, wie das alte X, aber DAS klappt nicht.
Noidea Noidea Noidea


Mach mal in die while noch pspDebugScreenClear(); weil es ist ja logisch das es immer wieder X ausgibt. Also sollte der Bildschirm dann irgendwann so aussehen:

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Mit pspDebugScreenClear(); kannst du das aber verhindern.

1. Versteh ich jetzt das Problem nicht und
2. Flimmert das X jetzt in der linken oberen Ecke vor sich hin.
Referenz-URLs