KINGx - Das inoffizielle PlayStation Forum & News Portal
[TUT] Die Graphics.h zur spiele Programmierung verwenden! - 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)
+----- Forum: Dev-Tutorials (/forumdisplay.php?fid=59)
+----- Thema: [TUT] Die Graphics.h zur spiele Programmierung verwenden! (/showthread.php?tid=47971)


[TUT] Die Graphics.h zur spiele Programmierung verwenden! - dark-awesome - 29.07.2011 00:23

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 Smile

So als erstes werden wir eine Einfache Bewegung eines "Character" mit Kollision machen:

So Nummer eins sind die Header und die define:

PHP-Code:
#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:

Spoiler: (anzeigen)


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

PHP-Code:
int main() {
  
pspDebugScreenInit();
  
SetupCallbacks();
  
initGraphics();
  
SceCtrlData pad


So nun wollen wir erst mal die Bilder laden, das machen wir so:

PHP-Code:
ImageSpieler;
  
ImageMainBg;

  
Spieler loadImage("mypfad/spieler.png");
  
MainBg loadImage("mypfad/mainbg.png"); 


Das ist eigentlich selbst erklärend.

Jetzt noch kurz ein paar Variablen:

PHP-Code:
int x 0;
int y 55


Nun folgt das eigentliche Spiel:

Spoiler: (anzeigen)


Die Makefile:

Code:
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 Smile

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.


RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden! - ~Hook~ - 25.08.2011 13:01

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


RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden! - dark-awesome - 25.08.2011 13:04

~Hook~ :
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.


RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden! - crunchop - 25.08.2011 13:11

gutes Tut Big Grin
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 Big Grin muss sagen Ähnelt ein bisschen allegro Big Grin Großen danke an dich Big Grin


RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden! - Neutrosider - 25.08.2011 13:13

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 Smile
mein problem hat zwar nur indirekt was mit den tutorial hier zu tun, aber wegen dir habe ic das gemerkt, daher danke Big Grin

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


RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden! - ~Hook~ - 25.08.2011 13:13

crunchop :
gutes Tut Big Grin
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 Big Grin muss sagen Ähnelt ein bisschen allegro Big Grin Großen danke an dich Big Grin


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


RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden! - crunchop - 25.08.2011 13:38

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 Big Grin) Ich denke wenn ichs auf dem pc kann wird es sich recht leicht auf die psp übertragen ;D


RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden! - Vault_11 - 01.09.2011 17:00

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.


RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden! - ~Hook~ - 01.09.2011 17:29

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


stehn :
Alle Dateien die ihr braucht findet hier hier:

http://www.psp-programming.com/tutorials/c/lesson04.zip


^^

Wenn du dir die ersten Kapitel des Buchs durchgelesen hättest, wüsstest du auch wie man kompilliert^^


RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden! - Vault_11 - 01.09.2011 18:54

~Hook~ :

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


stehn :
Alle Dateien die ihr braucht findet hier hier:

http://www.psp-programming.com/tutorials/c/lesson04.zip


^^

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 Big Grin


RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden! - Vault_11 - 01.09.2011 20:18

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.


RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden! - dark-awesome - 05.09.2011 16:34

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


RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden! - Vault_11 - 05.09.2011 18:54

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

Code:
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




RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden! - dark-awesome - 05.09.2011 19:03

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.


RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden! - secret - 05.09.2011 19:34

Vault_11 :
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

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


RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden! - PSP_Lord - 06.09.2011 15:05

"static declaration of 'function_X' follows non-static declaration" tritt immer dann auf, wenn eine Funktion als "static" deklariert wird, sie aber vorher bereits aufgerufen wird. "Static" limitiert die Sichtweite der Funktion, d.h. die Funktion ist erst ab dem Ort ihrer Deklaration/Definition bekannt.
Beispiel:

Code:
int foo() {

bar();
return 0;
}

static void bar() {
//blah
}


Dies wird obigen Fehler erzeugen, da die Funktion "bar" als "static" definiert ist und somit erst ab dem Ort ihrer Definition/Deklaration bekannt ist. Da es hier keine Deklaration von bar() gibt und die Definition von "bar" unterhalb von "foo" stattfindet, kennt "foo" "bar" nicht.

Es gibt zwei Lösungen dafür:
1) Wir deklarieren Bar() am Anfang des Files:

Code:
static void bar();

int foo() {

bar();
return 0;
}

static void bar() {
//blah
}


2) Wir definieren bar() bevor wir bar() aufrufen

Code:
static void bar() {
//blah
}

int foo() {

bar();
return 0;
}


Ich hoffe, diese Beschreibung hat euch diesen Fehler erklärt. Updatet einmal euer PSPSDK auf die neueste Version: http://sourceforge.net/projects/minpspw/


RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden! - taipangr - 06.09.2011 15:38

Tut mir Leid aber ich würde das nicht verstehen.Ich kann es bereits.


RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden! - PSP_Lord - 06.09.2011 15:44

Wärest du so freundlich mir mitzuteilen, was du an der Beschreibung nicht verstehst?


RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden! - Vault_11 - 06.09.2011 16:27

Ja das oben wäre ja ganz hilfreich wenn ich iwas deklariert hätte, aber ich habe ja jetzt überhaupt nichts in der Main.c stehen. Also nur die int main(void) {}, und in ihr das dass es zum laufen bringt. Also wie beim Hello World Programm. Wenn ich jetzt jedoch die png.h lösche verschwinden alle Fehler. Also liegts nur an der inkludierung. Warsch sind in dem Headerpacket von PspProgramming nicht alle nötigen Dateien vorhanden.
Aber es ist schon faszinierend das bisjezt nichts geklappt hat was iwo in einem Tut stand was mit C Programmierung für die PSP zu tun hatte. Als ob es 100 verschiedene Möglichkeiten gibt und nur die Kompination stimmen muss.


RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden! - dark-awesome - 06.09.2011 17:16

Also ich weis net was ihr hab bei mir geht alles ohne Probleme.


RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden! - knopper - 06.09.2011 17:40

@ Vault_11
Vielleicht helfen einige Code-Beispiele: http://psp.dashhacks.com/category/12


RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden! - Vault_11 - 06.09.2011 17:51

knopper :
@ Vault_11
Vielleicht helfen einige Code-Beispiele: http://psp.dashhacks.com/category/12


Ich kann ja nix coden da immer der Fehler angezeigt wird. Egal was ich reinschreib, und auch sogar wenn ich garnix schreib, immer der selbe Fehler. Und nach dem Tut hier müsst es eig. klappen.


RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden! - knopper - 06.09.2011 20:45

@ Vault_11
Nix selber coden, sondern nur mal testen, ob sich die C-Code-Beispiele (mit Makefile) überhaupt kompilieren lassen. Wenn's funzt, kannste dich an den Headerdateien und der Programmstruktur orientieren.


RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden! - Vault_11 - 07.09.2011 22:20

knopper :
@ Vault_11
Nix selber coden, sondern nur mal testen, ob sich die C-Code-Beispiele (mit Makefile) überhaupt kompilieren lassen. Wenn's funzt, kannste dich an den Headerdateien und der Programmstruktur orientieren.


Ich habe schon etliche Programme kompiliert, und alle gingen auch. Wenn ich den png.h Header lösche sind die Fehlermeldungen weg, also muss es an ihm liegen. Welche anderen Möglichkeiten gibt es denn um ein Bild darzustellen?


RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden! - knopper - 08.09.2011 08:49

http://www.psp-programming.com/tutorials/c/lesson04.htm


RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden! - Vault_11 - 08.09.2011 10:56

knopper :
http://www.psp-programming.com/tutorials/c/lesson04.htm


Lies dir doch bitte erstmal meine Posts durch und dann poste iwas.


RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden! - Neutrosider - 08.09.2011 11:09

ich denke du hast einfach die libpng und die zlib nicht richtig installiert. beides ist voraussetzung, um mit der graphics.h arbeiten zu können


RE: [TUT] Die Graphics.h zur spiele Programmierung verwenden! - knopper - 09.09.2011 13:36

Hab das TUT mal ausprobiert. So wie beschrieben, funzt es auch bei mir leider nicht.

Erst nachdem die "PSP_MODULE_INFO"-Zeile hinzugefügt und im Makefile "- pspgum" durch "- lpspgum" ersetzt wurde, läßt sich die Datei richtig kompilieren und auch starten.

Der Vollständigkeit halber wurde noch die Bewegung der Y-Achse und eine Analog-Pad Steuerung hinzugefügt:
Spoiler: (anzeigen)

http://s9.postimage.org/9p72stukb/Figur.png
http://s8.postimage.org/hjfy2yj91/Hintergrund.png


Und hier noch ein kleines Beispiel für die Spieleprogrammierung mit der „graphics.h“, bei dem die Grafiken nicht wie üblich vom Speicherstick nachgeladen, sondern als Header-Dateien verwendet werden:
Spoiler: (anzeigen)