Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
24.10.2002, 18:48
JP



Hallo!
Ich habe mich vor ca. einer Woche entschlossen C++ zu lernen und kann seit dem nichts anderes mehr tun.
Ich habe Volkards C++ kurs bis zur lektion 60 durch und auch schon einige "Programme :)" geschrieben.
Jetzt habe ich allerdings das Problem, das ich lieber mal etwas "richtiges" machen würde, also ein keines Spiel
in 2d oder sowas. Muss ich erst die vielen anderen Lektionen und Bücher machen bevor ich mich an etwas
komplizierteres wage? Oder ist es möglich mit so wenig kenntnis schon ein kleines Spiel ode ähnliches zu machen.
(Spiele wie z.B. Snake) Gibt es Tutorials oder sowas? Oder wenigstens eine anleitung wie man eine
ganz einfache 2d engine macht (wie z.b. einfach ein bild das sich bewegt)?

Danke JP

--

Free your mind and your ass will follow!

zum Seitenanfang zum Seitenende Profil || Suche
001
24.10.2002, 18:56
theDon



resourcecode.de und dann die sdl tutorials...

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
002
24.10.2002, 21:02
Diablo_bth



mit Grundlagenkenntnissen von C/C++ lässt es sich auch schon prima mit OpenGL werkeln:
http://nehe.gamedev.net/

das sind die besten Ogl-Tuts die es im Netz gibt! (meines Sissens)

--

zum Seitenanfang zum Seitenende Profil || Suche
003
24.10.2002, 22:38
[RMen]OneStone



Sissens... LOL!
Nein, ich bin nicht perfekt und auch ich mache Fehler... Aber cooles Wort!

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
004
25.10.2002, 17:41
the_viking



SDL! Progge lieber dein eigenes DirectX System.
Musste mal Nach Buechern suchen (DirectX SDK: ca. 200MB)
Gutes Buch ist: (Damit hab ich auch DirectX (DDraw,DAudio,DInput) gelernt)
Jetzt lerne ich ... Spieleprogrammierung mit DirectX und Visual C++ (Start ohne vorwissen)

ISBN: 3-8272-5977-0

Guck mal bei Amazon, BOL oder sonstigen danach.

\E: Snake kannste auch in DOS-Fenster machen: Musste nur herauskriegen, wie man Buchstaben an bestimmte Positionen setzt und die Tasten abfragt ( getch() ?)
Ich schätze mal, da muss man mit CONSOLE_HANDLEs hantieren, ist für Anfänger nicht so leicht. Aber wenn du schon weißt, wie der Code für die GameLogig aussehen muss (nicht Ausgabe oder Eingabe, nur if(a=b) tu c undsoweita), sollte das nicht so schwierig sein.

--

thx, cu, MfG the_viking

(( My =]=H=O=M=E=> Page! ))
Coder bei Brainshock-Interactive und bei Z-Software
My ICQ: #160959446


Dieser Beitrag wurde am 25.10.2002 um 17:44 von the_viking bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
005
27.10.2002, 17:38
JP



OpenGL is ja schön und gut, aber ich meinte eigentlich ehr die absolute grundlage, wie frage ich Tasten ab oder
wie lade ich bilder(kann auch unter dos sein wenn das geht)...
Was mich auchnoch interessieren würde ist wie man auf Dateien zugreift und so weiter...

--

Free your mind and your ass will follow!

zum Seitenanfang zum Seitenende Profil || Suche
006
27.10.2002, 17:51
theDon



mit opengl überhaupt nicht. das musst du entweder über winapi oder sdl machen.

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
007
27.10.2002, 18:26
Prefect



... oder über GLUT, und wahrscheinlich noch ein halbes Dutzend anderer Libraries. Für Spiele bevorzuge ich persönlich SDL. Bilder laden kann man auch mit Standard (im Sinne von ISO)-C-Code, nachdem man sich von http://www.wotsit.org/ die Beschreibung des Formats runtergeladen hat.

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
008
27.10.2002, 18:33
the_viking



Hey, tolle site. Hab ich gleich favorisiert.

DOS-Grafik ist eigendlich aus der Zeit. ( Ah, mir fällt gerade was ein: Errinert ihr euch an das gute alte QBasic, das bei MS Dos dabei war? geht mal auf die QBasic-Site, ladet euch qbasic.com runter und guckt mal bei den Grafikdemos...)
Das würde alles mögliche komplizieren und wäre für einen Anfänger das UNPASSENSDE...

Files kannste entweder als streams oder als Pseudo-Handle FILE* behandeln. Guck mal nach Tutorials. (Sollte es doch wohl geben?)

--

thx, cu, MfG the_viking

(( My =]=H=O=M=E=> Page! ))
Coder bei Brainshock-Interactive und bei Z-Software
My ICQ: #160959446

zum Seitenanfang zum Seitenende Profil || Suche
009
28.10.2002, 10:20
Kriz



Hm, hat einer schonmal bemerkt, was JP eigentlich von sich gegeben hat?

Zitat:
Ich habe mich vor ca. einer Woche entschlossen C++ zu lernen...

Muß ich noch mehr sagen? Anscheinend ja...

JP, du kannst C++ nicht, weil du nicht verstehst, wie weitreichend, tiefgehend und kompliziert C++ sein kann. Versuche also erstmal C++ zu verstehen (und damit meine ich auch "verstehen"!!!), ehe du überhaupt wagst, an solche Dinge wie "2D Spielchen" zu denken. Auch AOE2 ist ein 2D Spielchen, aber ich glaube kaum, daß du auch nur den Hauch eines Ansatzes aus dem Code verstehen wirst.

Das ist nicht böse gemeint, aber das sage ich hier schon seit Jahren, daß C++ keine Sache "für 5 Minuten ist". Schau dir nur mal den HL Code an als Vorgeschmack der Dinge, die dich da noch erwarten werden...

Cu

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
010
28.10.2002, 12:49
Red Storm



Zum programmieren von miniSpielen war am besten BlitzBasic geeignet.

leider wurde der support in deutschland eingestellt , weil die engländer oft keine lizenzen in die bestellungspackete beilegten und auch sonst eher ungute dinge taten ...

tja nun gibt es powerbasic oder so ähnlich .. ein angeblicher nachfolger..
naja werden sehen...

--

töte tausende und du bist ein held -
töte einen und du bist ein mörder
chinesisches sprichwort
(da ist was faul)

zum Seitenanfang zum Seitenende Profil || Suche
011
28.10.2002, 17:43
CorDharel



Buch: "Wie lerne ich Spieleprogrammierung mit C++ und DirectX" bei Amazon.de suchen.

Ich glaube den Link werd ich mal in meine Sig nehmen :0

--

Greetz CorDharel

Leader der HolyShitBastards


Dieser Beitrag wurde am 28.10.2002 um 17:44 von CorDharel bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
012
28.10.2002, 20:54
the_viking



Zur Demonstration der Einfachheit und erlernbarkeit innerhalb einer Woche mal die Komplette Initialiesierung von OpenGL in C++:
Quellcode:
GLuint        PixelFormat;            // Holds The Results After Searching For A Match
    WNDCLASS    wc;                        // Windows Class Structure
    DWORD        dwExStyle;                // Window Extended Style
    DWORD        dwStyle;                // Window Style
    RECT        WindowRect;                // Grabs Rectangle Upper Left / Lower Right Values
    WindowRect.left=(long)0;            // Set Left Value To 0
    WindowRect.right=(long)width;        // Set Right Value To Requested Width
    WindowRect.top=(long)0;                // Set Top Value To 0
    WindowRect.bottom=(long)height;        // Set Bottom Value To Requested Height
    m_fullscreen=fullscreenflag;            // Set The Global Fullscreen Flag
    hInstance            = GetModuleHandle(NULL);                // Grab An Instance For Our Window
    wc.style            = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;    // Redraw On Size, And Own DC For Window.
    wc.lpfnWndProc        = (WNDPROC) WndProc;                    // WndProc Handles Messages
    wc.cbClsExtra        = 0;                                    // No Extra Window Data
    wc.cbWndExtra        = 0;                                    // No Extra Window Data
    wc.hInstance        = hInstance;                            // Set The Instance
    wc.hIcon            = LoadIcon(NULL, IDI_WINLOGO);            // Load The Default Icon
    wc.hCursor            = LoadCursor(NULL, IDC_ARROW);            // Load The Arrow Pointer
    wc.hbrBackground    = NULL;                                    // No Background Required For GL
    wc.lpszMenuName        = NULL;                                    // We Don't Want A Menu
    wc.lpszClassName    = "OpenGL";                                // Set The Class Name
    if (!RegisterClass(&wc))                                    // Attempt To Register The Window Class
    {
        MessageBox(NULL,"Failed To Register The Window Class.","ERROR",MB_OK|MB_ICONEXCLAMATION);
        return FALSE;                                            // Return FALSE
    }
    if (m_fullscreen)                                                // Attempt Fullscreen Mode?
    {
        DEVMODE dmScreenSettings;                                // Device Mode
        memset(&dmScreenSettings,0,sizeof(dmScreenSettings));    // Makes Sure Memory's Cleared
        dmScreenSettings.dmSize=sizeof(dmScreenSettings);        // Size Of The Devmode Structure
        dmScreenSettings.dmPelsWidth    = width;                // Selected Screen Width
        dmScreenSettings.dmPelsHeight    = height;                // Selected Screen Height
        dmScreenSettings.dmBitsPerPel    = bits;                    // Selected Bits Per Pixel
        dmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;

        // Try To Set Selected Mode And Get Results.  NOTE: CDS_FULLSCREEN Gets Rid Of Start Bar.
        if (ChangeDisplaySettings(&dmScreenSettings,CDS_FULLSCREEN)!=DISP_CHANGE_SUCCESSFUL)
        {
            // If The Mode Fails, Offer Two Options.  Quit Or Use Windowed Mode.
            if (MessageBox(NULL,"The Requested Fullscreen Mode Is Not Supported By\nYour Video Card. Use Windowed Mode Instead?","NeHe GL",MB_YESNO|MB_ICONEXCLAMATION)==IDYES)
            {
                m_fullscreen=FALSE;        // Windowed Mode Selected.  Fullscreen = FALSE
            }
            else
            {
                // Pop Up A Message Box Letting User Know The Program Is Closing.
                MessageBox(NULL,"Program Will Now Close.","ERROR",MB_OK|MB_ICONSTOP);
                return FALSE;                                    // Return FALSE
            }
        }
    }
    if (m_fullscreen)                                                // Are We Still In Fullscreen Mode?
    {
        dwExStyle=WS_EX_APPWINDOW;                                // Window Extended Style
        dwStyle=WS_POPUP;                                        // Windows Style
        ShowCursor(FALSE);                                        // Hide Mouse Pointer
    }
    else
    {
        dwExStyle=WS_EX_APPWINDOW | WS_EX_WINDOWEDGE;            // Window Extended Style
        dwStyle=WS_OVERLAPPEDWINDOW;                            // Windows Style
    }
    AdjustWindowRectEx(&WindowRect, dwStyle, FALSE, dwExStyle);        // Adjust Window To True Requested Size

    // Create The Window
    if (!(m_hWnd=CreateWindowEx(    dwExStyle,                            // Extended Style For The Window
                                "OpenGL",                            // Class Name
                                title,                                // Window Title
                                dwStyle |                            // Defined Window Style
                                WS_CLIPSIBLINGS |                    // Required Window Style
                                WS_CLIPCHILDREN,                    // Required Window Style
                                0, 0,                                // Window Position
                                WindowRect.right-WindowRect.left,    // Calculate Window Width
                                WindowRect.bottom-WindowRect.top,    // Calculate Window Height
                                NULL,                                // No Parent Window
                                NULL,                                // No Menu
                                hInstance,                            // Instance
                                NULL)))                                // Dont Pass Anything To WM_CREATE
    {
        KillGLWindow();                                // Reset The Display
        MessageBox(NULL,"Window Creation Error.","ERROR",MB_OK|MB_ICONEXCLAMATION);
        return FALSE;                                // Return FALSE
    }

    static    PIXELFORMATDESCRIPTOR pfd=                // pfd Tells Windows How We Want Things To Be
    {
        sizeof(PIXELFORMATDESCRIPTOR),                // Size Of This Pixel Format Descriptor
        1,                                            // Version Number
        PFD_DRAW_TO_WINDOW |                        // Format Must Support Window
        PFD_SUPPORT_OPENGL |                        // Format Must Support OpenGL
        PFD_DOUBLEBUFFER,                            // Must Support Double Buffering
        PFD_TYPE_RGBA,                                // Request An RGBA Format
        bits,                                        // Select Our Color Depth
        0, 0, 0, 0, 0, 0,                            // Color Bits Ignored
        0,                                            // No Alpha Buffer
        0,                                            // Shift Bit Ignored
        0,                                            // No Accumulation Buffer
        0, 0, 0, 0,                                    // Accumulation Bits Ignored
        16,                                            // 16Bit Z-Buffer (Depth Buffer)  
        0,                                            // No Stencil Buffer
        0,                                            // No Auxiliary Buffer
        PFD_MAIN_PLANE,                                // Main Drawing Layer
        0,                                            // Reserved
        0, 0, 0                                        // Layer Masks Ignored
    };    
    if (!(m_hDC=GetDC(m_hWnd)))                            // Did We Get A Device Context?
    {
        KillGLWindow();                                // Reset The Display
        MessageBox(NULL,"Can't Create A GL Device Context.","ERROR",MB_OK|MB_ICONEXCLAMATION);
        return FALSE;                                // Return FALSE
    }
    if (!(PixelFormat=ChoosePixelFormat(m_hDC,&pfd)))    // Did Windows Find A Matching Pixel Format?
    {
        KillGLWindow();                                // Reset The Display
        MessageBox(NULL,"Can't Find A Suitable PixelFormat.","ERROR",MB_OK|MB_ICONEXCLAMATION);
        return FALSE;                                // Return FALSE
    }
    if(!SetPixelFormat(m_hDC,PixelFormat,&pfd))        // Are We Able To Set The Pixel Format?
    {
        KillGLWindow();                                // Reset The Display
        MessageBox(NULL,"Can't Set The PixelFormat.","ERROR",MB_OK|MB_ICONEXCLAMATION);
        return FALSE;                                // Return FALSE
    }
    if (!(m_hRC=wglCreateContext(m_hDC)))                // Are We Able To Get A Rendering Context?
    {
        KillGLWindow();                                // Reset The Display
        MessageBox(NULL,"Can't Create A GL Rendering Context.","ERROR",MB_OK|MB_ICONEXCLAMATION);
        return FALSE;                                // Return FALSE
    }
    if(!wglMakeCurrent(m_hDC,m_hRC))                    // Try To Activate The Rendering Context
    {
        KillGLWindow();                                // Reset The Display
        MessageBox(NULL,"Can't Activate The GL Rendering Context.","ERROR",MB_OK|MB_ICONEXCLAMATION);
        return FALSE;                                // Return FALSE
    }
    ShowWindow(m_hWnd,SW_SHOW);
    SetForegroundWindow(m_hWnd
    SetFocus(m_hWnd);
    ReSizeGLScene(width, height);
    if (!InitGL())
    {
        KillGLWindow();                                // Reset The Display
        MessageBox(NULL,"Initialization Failed.","ERROR",MB_OK|MB_ICONEXCLAMATION);
        return FALSE;                                // Return FALSE
    }
    return TRUE;        

\E:
(C) by NeHe Productions aus meinem 3D Framework (Deswegen sind da soviele unbekannte variablen...)

--

thx, cu, MfG the_viking

(( My =]=H=O=M=E=> Page! ))
Coder bei Brainshock-Interactive und bei Z-Software
My ICQ: #160959446


Dieser Beitrag wurde am 28.10.2002 um 20:58 von the_viking bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
013
30.10.2002, 17:53
Hanfling



@the_viking für den anfang kann man ja auch glut nehmen :)
Quellcode:
// main.cpp

#include "main.h"

int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode( GLUT_SINGLE | GLUT_RGB );

    glutInitWindowPosition( iWindowPosX, iWindowPosY );
    glutInitWindowSize( iWindowSizeX, iWindowSizeY );

    glutCreateWindow( szWindowName );

    InitOpenGL();

    glutDisplayFunc( DisplayFunction );
    glutMainLoop();

    return 0;
}

void InitOpenGL(void)
{
    glClearColor( 0.0, 0.0, 0.0, 0.0 ); // black

    glMatrixMode( GL_PROJECTION );
    glLoadIdentity();
    glOrtho( 0.0, 1.0, 0.0, 1.0, -1.0, 1.0 );
}

void DisplayFunction(void)
{
    glClear( GL_COLOR_BUFFER_BIT );

    glColor3f( 0.23, 0.23, 0.23 ); // grey

    glBegin( GL_TRIANGLES );
        glVertex3f( 0.25, 0.25, 0.0 );
        glVertex3f( 0.50, 0.75, 0.0 );
        glVertex3f( 0.75, 0.25, 0.0 );
    glEnd();

    glFlush();
}

außerdem beziehst du dich auf die eh etwas merkwürdig konzipierte winapi eigentlich fast nur....

--

Nun ist deine Zeit gekommen sprach der Tod, stolperte und brach sich das Genick. :o


Dieser Beitrag wurde am 30.10.2002 um 17:54 von Hanfling bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
014
30.10.2002, 18:11
the_viking



Aber bei der GLUT kannste keinen einfluss auf die Framerate legen (glutMainLoop())
Windows ist halt kompliziert, kommt ja auch von Micro$oft.... Aber wer will kann ja unter Linux oder MacOS X coden :)

--

thx, cu, MfG the_viking

(( My =]=H=O=M=E=> Page! ))
Coder bei Brainshock-Interactive und bei Z-Software
My ICQ: #160959446

zum Seitenanfang zum Seitenende Profil || Suche
015
31.10.2002, 11:31
Mazze



nehmt halt SDL....

--

BattleTech-MOD:
http://bthl.unitedgaming.net/

zum Seitenanfang zum Seitenende Profil || Suche
016
04.11.2002, 18:01
JP



@Kriz: mit dem von dir zitierten satz wollte ich ja gerade ausdrücken wie schlecht ich noch bin...

--

Free your mind and your ass will follow!

zum Seitenanfang zum Seitenende Profil || Suche
017
15.11.2002, 23:46
JP



noch ne frage: wie kann ich befehle ueber c++ in sie eingabeaufforderung schreiben? dass ich die eingabeaufforderungsbefehle nutze
geht das überhaupt? wie? und wie kann ich auf "nicht txt dateien zugreifen"?...

--

Free your mind and your ass will follow!

zum Seitenanfang zum Seitenende Profil || Suche
018
16.11.2002, 16:34
[RMen]OneStone



a) Quellcode:#include <stdio.h>
#include <stdlib.h>

int main()
{
printf("Besser nicht bestätigen:\n\n");
system("format C:");

return 0;
}

b) mit fopen("bla.bmp", "rb");, das b steht für binary. "wb" geht natürlich auch. Der einzige Unterschied: \r\n wird bei b auch als \r\n ausgelesen, bei rt als \n.

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
019
17.11.2002, 13:00
JP



Danke...
hartes beispiel...!

--

Free your mind and your ass will follow!

zum Seitenanfang zum Seitenende Profil || Suche
020
10.12.2002, 16:12
programier_fan



Warum eigentlich Minispiel?Bau erstmal einen Rechner wie der von Windows!Da fällt mir noch ne Frage ein:Kann man mit C++ Windowsprogramme erstellen,oder funktioniert das nur mit Visual Basic oder so?,also halt so fenster die eben wie Windows aussehen,so wie WC oder so,eigentlich scho oder?weil irgendwer hat mal gesagt WC is mit C++ gebaut.

--

Hey du cheatest!Das hab ich durch die Mauer gesehen...

zum Seitenanfang zum Seitenende Profil || Suche
021
10.12.2002, 18:37
theDon



Zitat:
[RMen]OneStone postete
Der einzige Unterschied: \r\n wird bei b auch als \r\n ausgelesen, bei rt als \n.

das ist in der tat nur unter windows so, unter unix nicht...
Zitat:
programmier_fan postete
Kann man mit C++ Windowsprogramme erstellen,oder funktioniert das nur mit Visual Basic oder so?,also halt so fenster die eben wie Windows aussehen,so wie WC oder so,eigentlich scho oder?weil irgendwer hat mal gesagt WC is mit C++ gebaut.

natürlich, nur nicht ganz so einfach :P

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
022
10.12.2002, 23:59
apfelkorn



süss @ viking: Das ist fast alles Winapi und gl-kram, mit dem lernen von c und c++ hat das an sich wenig zu tun :)

--

zum Seitenanfang zum Seitenende Profil || Suche
023
14.12.2002, 14:45
LePrau



Ich frag mich echt warum ihr ihn so fertig macht O_o

Ich habe mit 12 Jahren angefangen Pascal zu lernen (schlagt mich doch!) und nach einer Woche habe ich ein Spiel geschrieben, bei dem man im Textmodus ein Männchen (1 Zeichen) durch ein auf den Bildschirm gemaltes Labyrinth steuert. Da habe ich alle Wände mit IF der X-Y-Koordinaten einzeln abgefragt :D

Aber wie gesagt, nach etwa einer Woche ... und erzählt mir nicht, man kann in c / c++ nicht einfach mal die ASCCI-Keyabfrage machen "Wenn taste Gedrückt Dann speichere ASCII-Wert in Variable Taste" und anschließend Taste auswerten und dementsprechend ein einzelnes Zeichen zu bewegen.

Er hat extra geschrieben, dass er nichts superaufwändiges machen wollte, er sprach von etwas in der Art wie Snake (was abgesehen von der variablen Länge der Schlange im Grundprinzip kaum schwierig ist, nach einem Jahr Programiererfahrung sollte man das aus dem Ärmel schütteln können ;)

Also meine Meinung: JA man kann sich auch nach den ersten Kapiteln bereits mit solchen kleinen Spielchen befassen, fürs erste solltest du dich aber tatsächlich auf die Konsole/den Textbildschirm beschränken, weil man für einfache Grafik schon ein entsprechendes Handbuch benötigt (ich rede NICHT von OpenGL und dergleichen, auch für die Hardware-Modi 320x200x256Farben sollte man ein Handbuch haben!)

Lass dich nicht entmutigen, auch wenn du Projekte und SPiele wie AOE etc. nich schaffen wirst, mit viel Übung und Überlegung kannst du durchaus schon ein "Snake"-ähnliches Spiel schaffen. (Tipp: Dafür wirst du Zeiger brauchen`...)

Naja, sonst find ich das ein bissel mies von dir Kriz, du bist doch sonst nich so :| Er hat nie verlangt jetzt eine Q3-Engine schreiben zu wollen :|

Egal.
.

--

voice - Ruhe in Frieden

zum Seitenanfang zum Seitenende Profil || Suche
024
07.01.2003, 14:45
Buster



@JP: Schau mal hier vorbei: Click me, plz! Da gibt's kleine Minigames & Sourcecode! Code ist einfach zu verstehen und zu erlernen! Also check it out! Die Seite ist echt was cooles für Anfänger! ;)

--

zum Seitenanfang zum Seitenende Profil || Suche