KINGx - Das inoffizielle PlayStation Forum & News Portal
Textposition bestimmen? - Druckversion

+- KINGx - Das inoffizielle PlayStation Forum & News Portal (http://www.kingx.de/forum)
+-- Forum:    PS Vita / PSP (/forumdisplay.php?fid=1)
+--- Forum: Homebrew (/forumdisplay.php?fid=8)
+---- Forum: Development (/forumdisplay.php?fid=34)
+---- Thema: Textposition bestimmen? (/showthread.php?tid=46459)


Textposition bestimmen? - vielesysteme - 05.07.2011 16:06

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


RE: Textposition bestimmen? - 3m!n - 05.07.2011 16:10

Mit pspDebugScreenSetXY Wink

3m!n


RE: Textposition bestimmen? - vielesysteme - 05.07.2011 16:34

Gibts auch pspDebugScreenClear?


RE: Textposition bestimmen? - 3m!n - 05.07.2011 16:37

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


RE: Textposition bestimmen? - HacKmaN - 05.07.2011 17:08

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


RE: Textposition bestimmen? - vielesysteme - 05.07.2011 17:13

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;




RE: Textposition bestimmen? - dark-awesome - 05.07.2011 23:41

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 ^^


RE: Textposition bestimmen? - vielesysteme - 06.07.2011 10:26

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


RE: Textposition bestimmen? - dark-awesome - 06.07.2011 10:38

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 ^^


RE: Textposition bestimmen? - vielesysteme - 06.07.2011 10:48

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


RE: Textposition bestimmen? - dark-awesome - 06.07.2011 10:52

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.


RE: Textposition bestimmen? - vielesysteme - 06.07.2011 10:59

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