|
Verfasser |
Nachricht |
dark-awesome
stehn
Beiträge: 3.204
Gruppe: Banned
Registriert seit: Jul 2010
Status:
Offline
Danke erhalten: 2192
|
[TUT] Die Graphics.h zur spiele Programmierung verwenden!
Hallo liebe Community,
ich hab mir heute mal gedacht ein Tutorial zu machen das euch zeigt wie ihr ohne großen Aufwand kleine und große Spiele für die PSP Programmieren könnt.
Ihr braucht dazu nur den Graphics.h Header
So als erstes werden wir eine Einfache Bewegung eines "Character" mit Kollision machen:
So Nummer eins sind die Header und die define:
#include <pspdisplay.h> #include <pspctrl.h> #include <pspkernel.h> #include <pspdebug.h> #include <pspgu.h> #include <png.h> #include <stdio.h>
#include "graphics.h"
#define printf pspDebugScreenPrintf #define black 0xFF000000
Jetzt folgt der Code den man in jedem Homebrew haben sollte und zwar den Callback Code:
/* Exit callback */ int exit_callback(int arg1, int arg2, void *common) { sceKernelExitGame(); return 0; }
/* Callback thread */ int CallbackThread(SceSize args, void *argp) { int cbid;
cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL); 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", CallbackThread, 0x11, 0xFA0, 0, 0); if(thid >= 0) { sceKernelStartThread(thid, 0, 0); }
return thid; }
---- Als nächstest folgt die Main. Und die werde ich versuchen so gut wie möglich zu erklären:
Als erstes müssen wir den Bildschirm frei geben, die Verwendung von graphics aktivieren und natürlich die Callback mit einbinden und noch die pad variable festlegen die wir später für die Tastenabfrage brauchen ^^
int main() { pspDebugScreenInit(); SetupCallbacks(); initGraphics(); SceCtrlData pad;
So nun wollen wir erst mal die Bilder laden, das machen wir so:
Image* Spieler; Image* MainBg;
Spieler = loadImage("mypfad/spieler.png"); MainBg = loadImage("mypfad/mainbg.png");
Das ist eigentlich selbst erklärend.
Jetzt noch kurz ein paar Variablen:
Nun folgt das eigentliche Spiel:
while(1) { sceCtrlReadBufferPositive(&pad, 1); sceDisplayWaitVblankStart();
//Ich erhöhe/verniedrige also immer die x Position des Spielers und lösche danach den Bildschirm Inhalt damit sich die Bilder nicht überlagern if((pad.Buttons & PSP_CTRL_LEFT) && (x != 0)) { // x != 0 ist die Kollision damit man nicht über den Bildschrim laufen kann x-=5; clearScreen(black); } if((pad.Buttons & PSP_CTRL_RIGHT) && (x != 450)) { //warum den "x != 450" und nicht 480 weil mein Spieler eine Pixel breite von 30px hat. Also 480 - 30 = 450 x+=5; clearScreen(black); }
//Die Syntax um ein Bildauszugeben sieht so aus: blitAlphaImageToScreen( XY Position im Bildfeld, Billgröße, Image* , Position auf dem Bildschirm); blitAlphaImageToScreen( 0, 0, 480, 272, MainBg, 0, 0); //Da ein Code immer von oben nach unten gelesen wird muss der Hintergrund über dem Spieler sein blitAlphaImageToScreen( 0, 0, 30, 60, Spieler, x, y);
//Klatscht dann alles auf den Bildschirm flipScreen(); }
sceKernelExitGame(); return 0; }
Die Makefile:
TARGET = ebootfiles
OBJS = main.o graphics.o framebuffer.o
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
LIBDIR =
LIBS = -lpspgu -pspgum -lpng -lz -lm -lmad
LDFLAGS =
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = MyFirstGame
PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak
Ich hoffe ich habe alles so gut wie möglich beschrieben. Bin leider nicht so gut in Erklären xD
Wenn noch fragen sind schreibt hier oder mir eine PM
Alle Dateien die ihr braucht findet hier hier:
http://www.psp-programming.com/tutorials/c/lesson04.zip
Lasse mich auch gerne verbessern ich bin auch nur Anfänger.
Beispiel Bilder:
Werde bald noch mehr tuts in die Richtung machen. Vielleicht eins wie man Physik in sein HB mit einbringt. Oder wie man ein Einfaches grafikes Menü macht.
Dieser Beitrag wurde zuletzt bearbeitet: 29.07.2011 00:30 von dark-awesome.
|
|
29.07.2011 00:23 |
|
Folgende User bedanken sich: |
|
~Hook~
C-Coder
Beiträge: 1.706
Gruppe: User
Registriert seit: Dec 2010
Status:
Offline
Danke erhalten: 1129
|
RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden!
Da das TUT immer noch aktuell ist, werde ich dir mal ein Statement ist geben:
Ich denke mal du hast es versucht anfängerfreundlich zu erklären, ist dir auch glaube ich ganz gelungen.
Aber ein paar Sachen hast du nicht erklärt, aber ist ja auch dein erstes TUT^^
Freu mich schon auf das nächste von dir^^
lg
<?php echo 'Signatur'; ?>
|
|
25.08.2011 13:01 |
|
Folgende User bedanken sich: |
|
dark-awesome
stehn
Beiträge: 3.204
Gruppe: Banned
Registriert seit: Jul 2010
Status:
Offline
Danke erhalten: 2192
|
RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden!
Da das TUT immer noch aktuell ist, werde ich dir mal ein Statement ist geben:
Ich denke mal du hast es versucht anfängerfreundlich zu erklären, ist dir auch glaube ich ganz gelungen.
Aber ein paar Sachen hast du nicht erklärt, aber ist ja auch dein erstes TUT^^
Freu mich schon auf das nächste von dir^^
lg
Ja wenn ein was genauer wissen will kann ich es ihm ja erklären.
|
|
25.08.2011 13:04 |
|
|
|
crunchop
Experte
Beiträge: 581
Gruppe: User
Registriert seit: Jun 2010
Status:
Offline
Danke erhalten: 221
|
RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden!
|
|
25.08.2011 13:11 |
|
|
|
Neutrosider
Developer
Beiträge: 2.442
Gruppe: Developer
Registriert seit: Feb 2010
Status:
Offline
Danke erhalten: 2325
|
RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden!
LOL? ich dachte mir immer ich brauche die libpng um pngs zu laden, und ich habe auch immer neben der graphics.h auch immer die png.h includiert, und jetzt merke ich wegen diesem tut hier grade, dass es auch wunderbar funktioniert, wenn ich die libpng weglasse
mein problem hat zwar nur indirekt was mit den tutorial hier zu tun, aber wegen dir habe ic das gemerkt, daher danke
EDIT: machnmal bin ic ein wenig döselig. hab grade gemerkt dass die lippng, da sie in der graphics.c includiert wird, voraussetzung ist um die graphics.c zu benutzen ^^
GEGEN ACTA, SOPA UND PIPA!
was sind ACTA, SOPA und PIPA?
Infos dazu hier (video), hier (video) und hier (website)
Dieser Beitrag wurde zuletzt bearbeitet: 25.08.2011 13:19 von Neutrosider.
|
|
25.08.2011 13:13 |
|
Folgende User bedanken sich: |
|
~Hook~
C-Coder
Beiträge: 1.706
Gruppe: User
Registriert seit: Dec 2010
Status:
Offline
Danke erhalten: 1129
|
RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden!
gutes Tut
denke werde auch mal die Tage mit Psp Programmierung anfangen hatte mich bis jetzt Gedrückt da cih keine richtige graphic header datei gefunden hab aber durch dein tut hat sich das ja geklärt muss sagen Ähnelt ein bisschen allegro Großen danke an dich
Du hast dich vor der PSP-Programmierung gedrückt wegen einer Graphic Header Detei?
Normalerweiße fängt man erst bei der PSP-Programmierung mit einem einfachen Hello World an und dann z.B. ein Menü, etc...
lg
<?php echo 'Signatur'; ?>
Dieser Beitrag wurde zuletzt bearbeitet: 25.08.2011 13:13 von ~Hook~.
|
|
25.08.2011 13:13 |
|
|
|
crunchop
Experte
Beiträge: 581
Gruppe: User
Registriert seit: Jun 2010
Status:
Offline
Danke erhalten: 221
|
RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden!
Ja Genau das ! Hab nichts wirklich aktuelles gefunden und hab heir ein allegro Buch liegen also amch ich lieber pc ;D (bin grad dabei jumpandrun (bzw. irgent etwas ähnliches) zu machen Naja das springen und die map hab ich schonmal >.< fehlen nurnoch tausend andere sachen ) Ich denke wenn ichs auf dem pc kann wird es sich recht leicht auf die psp übertragen ;D
|
|
25.08.2011 13:38 |
|
|
|
Vault_11
Durchstarter
Beiträge: 66
Gruppe: User
Registriert seit: Aug 2011
Status:
Offline
Danke erhalten: 3
|
RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden!
Danke für das Tut, ist eig. verständlich geschrieben. Nur weiss ich jetzt nicht wo ich die graphics.h herbekommen soll, aber egal. Weisst du zufällig wie ich Bilder auf dem PC darstellen kann? Ich lese jetzt schon seit mehreren Tagen das Buch "C von A bis Z" und verstehe nicht wie ich das bisher gelesene in Programmen anwenden kann.
|
|
01.09.2011 17:00 |
|
|
|
~Hook~
C-Coder
Beiträge: 1.706
Gruppe: User
Registriert seit: Dec 2010
Status:
Offline
Danke erhalten: 1129
|
RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden!
Danke für das Tut, ist eig. verständlich geschrieben. Nur weiss ich jetzt nicht wo ich die graphics.h herbekommen soll, aber egal. Weisst du zufällig wie ich Bilder auf dem PC darstellen kann? Ich lese jetzt schon seit mehreren Tagen das Buch "C von A bis Z" und verstehe nicht wie ich das bisher gelesene in Programmen anwenden kann.
^^
Wenn du dir die ersten Kapitel des Buchs durchgelesen hättest, wüsstest du auch wie man kompilliert^^
<?php echo 'Signatur'; ?>
|
|
01.09.2011 17:29 |
|
|
|
Vault_11
Durchstarter
Beiträge: 66
Gruppe: User
Registriert seit: Aug 2011
Status:
Offline
Danke erhalten: 3
|
RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden!
Danke für das Tut, ist eig. verständlich geschrieben. Nur weiss ich jetzt nicht wo ich die graphics.h herbekommen soll, aber egal. Weisst du zufällig wie ich Bilder auf dem PC darstellen kann? Ich lese jetzt schon seit mehreren Tagen das Buch "C von A bis Z" und verstehe nicht wie ich das bisher gelesene in Programmen anwenden kann.
^^
Wenn du dir die ersten Kapitel des Buchs durchgelesen hättest, wüsstest du auch wie man kompilliert^^
Was hat meine Frage bitte mit dem Kompilieren zu tun? Was ich eigentlich meinte ist das ich das gelernte aus dem Buch jetzt iwie praktisch anwenden will, denn ich denke nur so kann man eine Programmiersprache richtig lernen. Stures auswendiglernen oder einfach durchlesen werden dabei nicht viel helfen. Und hättest du dir das Buch durchgelesen würdest du mir sagen können wie man Bilder anzeigen lassen kann
|
|
01.09.2011 18:54 |
|
|
|
Vault_11
Durchstarter
Beiträge: 66
Gruppe: User
Registriert seit: Aug 2011
Status:
Offline
Danke erhalten: 3
|
RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden!
Was genau muss ich mit den Headerdateien machen die ich von PSP Programming gezogen habe? Immer wenn ich das Programm Kompilieren will zeigt es mir 8 Fehler an und alle 8 Fehler haben was mit der Declaration von iwelchen Konstanten zu tun. Woran liegt das?
UPDATE: ist aber schon sehr gute Arbeit von dir Stehn wenn du unter deinem Beitrag noch schreibst "Fragt falls was nicht klar ist" und dann meine Fragen nicht beantwortest.
Dieser Beitrag wurde zuletzt bearbeitet: 02.09.2011 17:30 von Vault_11.
|
|
01.09.2011 20:18 |
|
|
|
dark-awesome
stehn
Beiträge: 3.204
Gruppe: Banned
Registriert seit: Jul 2010
Status:
Offline
Danke erhalten: 2192
|
RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden!
Was genau muss ich mit den Headerdateien machen die ich von PSP Programming gezogen habe? Immer wenn ich das Programm Kompilieren will zeigt es mir 8 Fehler an und alle 8 Fehler haben was mit der Declaration von iwelchen Konstanten zu tun. Woran liegt das?
UPDATE: ist aber schon sehr gute Arbeit von dir Stehn wenn du unter deinem Beitrag noch schreibst "Fragt falls was nicht klar ist" und dann meine Fragen nicht beantwortest.
Hmm vielleicht daran gedacht das ich ein Mensch und kein Bot bin ich sag nur: Real Life.
Außerdem gibt es noch PM und in letzter Zeit bin ich so beschäftigt das ich weniger am PC hock. Aber Danke für die Worte. Also die Header Dateien müssen in den Order in der die main.c und das Makefile liegt, das makefile musst du auch anpassen falls das noch nicht geschehen ist. Siehe oben.
|
|
05.09.2011 16:34 |
|
Folgende User bedanken sich: |
|
Vault_11
Durchstarter
Beiträge: 66
Gruppe: User
Registriert seit: Aug 2011
Status:
Offline
Danke erhalten: 3
|
RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden!
Ja Sorry, aber wenn ich sehe das manche User online sind und anscheinend einfach zu faul sind mir zu helfen dann hab ich auch keinen Bock auf das Forum hier, ich meine für was ist man dann hier. Ist jetzt nicht auf dich bezogen.
Also ich habe das was du sagt bereits ausprobiert und es kommt immernoch folgender Fehlercode
1>C:/pspsdk/psp/sdk/include/stdio.h (29) : error: static declaration of 'close' follows non-static declaration
1>c:/pspsdk/lib/gcc/../../psp/include/sys/unistd.h (29) : error: previous declaration of 'close' was here
1>C:/pspsdk/psp/sdk/include/stdio.h (30) : error: static declaration of 'read' follows non-static declaration
1>c:/pspsdk/lib/gcc/../../psp/include/sys/unistd.h (130) : error: previous declaration of 'read' was here
1>C:/pspsdk/psp/sdk/include/stdio.h (31) : error: static declaration of 'write' follows non-static declaration
1>c:/pspsdk/lib/gcc/../../psp/include/sys/unistd.h (175) : error: previous declaration of 'write' was here
1>C:/pspsdk/psp/sdk/include/stdio.h (32) : error: static declaration of 'lseek' follows non-static declaration
1>c:/pspsdk/lib/gcc/../../psp/include/sys/unistd.h (113) : error: previous declaration of 'lseek' was here
1>C:\pspsdk\bin\make: *** [main.o] Error 1
|
|
05.09.2011 18:54 |
|
|
|
dark-awesome
stehn
Beiträge: 3.204
Gruppe: Banned
Registriert seit: Jul 2010
Status:
Offline
Danke erhalten: 2192
|
RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden!
Hmm weis ich jetzt gerade net weiter hab aber auch keine Zeit muss kurz weg. Aber installier mal ein anderes SDK Download Link find ich gerade nicht.
Bei mir geht nämlich alles.
Ach ja ich lass meinen Laptop immer an deswegen bin ich eigentlich ziemlich lange Online bis ich ihn halt aus mach.
|
|
05.09.2011 19:03 |
|
|
|
secret
Experte
Beiträge: 569
Gruppe: User
Registriert seit: Jul 2011
Status:
Offline
Danke erhalten: 210
|
RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden!
Ja Sorry, aber wenn ich sehe das manche User online sind und anscheinend einfach zu faul sind mir zu helfen dann hab ich auch keinen Bock auf das Forum hier, ich meine für was ist man dann hier. Ist jetzt nicht auf dich bezogen.
Also ich habe das was du sagt bereits ausprobiert und es kommt immernoch folgender Fehlercode
1>C:/pspsdk/psp/sdk/include/stdio.h (29) : error: static declaration of 'close' follows non-static declaration
1>c:/pspsdk/lib/gcc/../../psp/include/sys/unistd.h (29) : error: previous declaration of 'close' was here
1>C:/pspsdk/psp/sdk/include/stdio.h (30) : error: static declaration of 'read' follows non-static declaration
1>c:/pspsdk/lib/gcc/../../psp/include/sys/unistd.h (130) : error: previous declaration of 'read' was here
1>C:/pspsdk/psp/sdk/include/stdio.h (31) : error: static declaration of 'write' follows non-static declaration
1>c:/pspsdk/lib/gcc/../../psp/include/sys/unistd.h (175) : error: previous declaration of 'write' was here
1>C:/pspsdk/psp/sdk/include/stdio.h (32) : error: static declaration of 'lseek' follows non-static declaration
1>c:/pspsdk/lib/gcc/../../psp/include/sys/unistd.h (113) : error: previous declaration of 'lseek' was here
1>C:\pspsdk\bin\make: *** [main.o] Error 1
-_-" Bei mir kommt genau der gleiche Fehler.
|
|
05.09.2011 19:34 |
|
|
|
|