[NuclearBasic] Breakout Clone
Übersicht

head2003Betreff: [NuclearBasic] Breakout Clone |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo ![]() Ich habe hier ein kleines Breakout Startup erstellt. Nix wildes, aber vielleicht eine Hilfe für den ein oder anderen. (vermutlich gibt es hier und da bessere Lösungen, ich beschäftige mich erst seit gestern mit NuclearBasic) Code: [AUSKLAPPEN] /*
breakout.nb v0.5 Mario Sasse - hex2 - July 2013 (based on Blitzbasic code from Figment - Feb 2004) */ // Window, Random, etc. Settings wnd = MakeWindowDX(800, 600, 32, 0, 0, 3) If Not wnd Then DebugError("You need to update DirectX") SetRandSeed( Millisecs() ) HidePointer // Set Variables maxballspd# = 1 // max. Speed of the ball Vx# = 0 // x velocity Vz# = 0 // y velocity lifes = 3 // Playerlifes blocks = 0 // Block Counter gamestart = 0 // Ball waiting for click // Set Collision Types TYPE_BORDER = 1 // Collision Type for Walls TYPE_PADDLE = 2 // Collision Type for Paddle TYPE_BLOCKS = 3 // Collision Type for Blocks TYPE_BALL = 4 // Collision Type for Ball SetCollisions( TYPE_BALL, TYPE_BORDER ) SetCollisions( TYPE_BALL, TYPE_PADDLE ) SetCollisions( TYPE_BALL, TYPE_BLOCKS ) // Types Type Block Field entity EndType // Lightsettings light1=MakeLight() PositionEnt(light1, 0,20,0) // Camerasetting cam=GetDefaultCamera() SetCameraRange cam,0.5,10000 MoveEnt cam, 0.74, 55,-28.17 TurnEnt cam, 27, 0, 0 // Floor (no function) plane=MakePlane(1000,1000) SetEntColor plane,MakeColor(50,150,50) PositionEnt plane,0,-5,0 // Ball ball = MakeSphere() PositionEnt ball, 0, 0, 50 ScaleMesh ball, 3, 3, 3 AddEntSphereShape ball, 3 SetEntHasFeedback ball, 1 CollisionEnt( ball, TYPE_BALL ) // Paddle paddle = MakeCube() PositionEnt paddle, 0, 0, 30 ScaleMesh paddle, 20, 3, 2 AddEntBoxShape paddle,10,1.5,1 CollisionEnt( paddle, TYPE_PADDLE ) // Walls bwall = MakeCube() PositionEnt bwall,0, 0, 180 ScaleMesh bwall,100,10,4 AddEntBoxShape bwall,50,5,2 SetEntColor(bwall,MakeColor(100,150,150)) CollisionEnt( bwall, TYPE_BORDER ) rwall = MakeCube() PositionEnt rwall,50, 0, 100 ScaleMesh rwall,4,10,160 AddEntBoxShape rwall,2,5,80 SetEntColor(rwall,MakeColor(100,150,150)) CollisionEnt( rwall, TYPE_BORDER ) lwall = MakeCube() PositionEnt lwall,-50, 0, 100 ScaleMesh lwall,4,10,160 AddEntBoxShape lwall,2,5,80 SetEntColor(lwall,MakeColor(100,150,150)) CollisionEnt( lwall, TYPE_BORDER ) // Create Blocks For x = -30 To 30 Step 15 For y = 150 To 80 Step -12 bl.Block = New Block bl\entity = MakeCube() PositionEnt bl\entity,x,0,y ScaleMesh bl\entity,12,6,6 AddEntBoxShape bl\entity,6,3,3 SetEntColor(bl\entity,MakeColor(Rand(0,255),Rand(0,255),Rand(0,255))) CollisionEnt( bl\entity, TYPE_BLOCKS ) blocks = blocks + 1 Next Next // Main Loop While Not KeyHit(1) If Do3DTweening() If lifes > 0 Then // Move Paddle x1# = x1# + MouseSpeedX()*0.5 oldx# = GetEntPosX(paddle) If x1# < -40 Then x1#=-40 If x1# > 40 Then x1#=40 PositionEnt paddle,x1#,0,30 PFx# = (GetEntPosX(paddle) - oldx) SetMousePos Get3DWidth()/2, Get3DHeight()/2, wnd MouseSpeedX() End If // Update Collisions For c = 1 To CountCollisions(ball) Nx# = CollisionHitNormX#( ball, c-1 ) Nz# = CollisionHitNormZ#( ball, c-1 ) VdotN# = Vx# * Nx# + Vz# * Nz# NFx# = -2.0 * Nx# * VdotN# NFz# = -2.0 * Nz# * VdotN# If CollisionHitType(ball, c-1) = TYPE_PADDLE Then /* With this part the Paddle Speed can chance the Ball Speed.. It works, but if you move the Mouse after the Ball is lost, there is a bug */ Vx# = Vx# + NFx# + PFx#*0.5 Vz# = Vz# + NFz# - Abs(PFx#*0.1) Else Vx# = Vx# + NFx# Vz# = Vz# + NFz# EndIf ballspd# = Sqr(Vx# * Vx# + Vz# * Vz#) If ballspd# > maxballspd# Then Vx# = Vx# / ballspd# * maxballspd# Vz# = Vz# / ballspd# * maxballspd# EndIf If Vz = 0 Then Vz = -.1 // If vz is 0, the ball never come back, just a quick and dirty solution ;) If CollisionHitType(ball, c-1) = TYPE_BLOCKS Then For bl.Block Each Block If bl\entity = CollisionHitEnt( ball ) Then KillEnt( bl\entity ) Delete bl blocks = blocks - 1 End If Next End If Next TranslateEnt ball,Vx,0,Vz PositionEnt ball,GetEntPosX(ball),0,GetEntPosZ(ball) // Ball Lost If GetEntPosZ(ball) < 0 Then PositionEnt ball, 0, 0, 50 Vx = 0 Vz = 0 ballspd = 0 gamestart = 0 lifes = lifes - 1 End If // Left Mouse Click to kick the Ball If gamestart = 0 Then If MouseHit(1) Then Vx# = RandF(-2,2) Vz# = RandF(1,2) gamestart = 1 End If End If Print "Lifes: " + lifes Print "Blocks: " + blocks Print "FPS: " + GetFPS() End If Sync() Wend |
||
- Zuletzt bearbeitet von head2003 am Do, Aug 01, 2013 2:01, insgesamt 2-mal bearbeitet
head2003 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
noch eine überarbeitete Version
Code: [AUSKLAPPEN] /*
breakout.nb v0.9 Mario Sasse - hex2 - July 2013 (based on Blitzbasic code from Figment - Feb 2004) */ // -------------------------------------------------> Variables // System Variables screenHeight = 1440 // Window Height screenWidth = 900 // Window Width screenDepth = 32 // Window Depth screenFullscreen = False // Window Fullscreen // Game Variables Global CurrentPlayer = 0 // Current Player Global RealPaddle = True // Paddle can affect the ball Global BallsInGame = 0 // Ball Counter Global BlocksInGame = 0 // Block Counter Global level = 1 // Level Counter Global MaxLevel = 4 // How many levels exists Global gamestart = 0 // Ball waiting for click // Set Collision Types Global TYPE_BORDER = 1 // Collision Type for Walls Global TYPE_PADDLE = 2 // Collision Type for Paddle Global TYPE_BLOCKS = 3 // Collision Type for Blocks Global TYPE_BALL = 4 // Collision Type for Ball SetCollisions( TYPE_BALL, TYPE_BORDER ) SetCollisions( TYPE_BALL, TYPE_PADDLE ) SetCollisions( TYPE_BALL, TYPE_BLOCKS ) // Window, Random, etc. Settings Global wnd = MakeWindowDX(screenHeight, screenWidth, screenDepth, screenFullscreen) If Not wnd Then DebugError("You need to update DirectX") SetRandSeed( Millisecs() ) HidePointer Font = LoadFont2D("Arial", 16) world = GetCurrentWorld() Global balltex = LoadTexture("ball.jpg") // -------------------------------------------------> Types // Types // Blocks Type Block Field entity // entity Field typ // Typ (Gadets) Field hits // How much hits to break EndType // Balls Type Ball Field ballspd# // cur. Speed Field maxballspd# // max. Speed Field Vx#, Vz# // velocity Field x#, y#, z# // coordinates Field r# // radius Field entity // entity Field OldX#, NewX#, OldY#, NewY#, OldZ#, NewZ# // Variables for the rolling EndType // Players Type Player Field x#, oldx# // Player X Position Field PFx# Field name$ Field score Field lifes EndType // Score Text Type ScoreText Field x#, y#, z# // Position Field alpha# // Alpha Field r,g,b // Text Color Field entity // Entity EndType // -------------------------------------------------> Entitys // Lightsettings Global light1=GetDefaultLight() PositionEnt(light1, 0,50,70) SetLightCastsShadows light1 // Camerasetting Global cam=GetDefaultCamera() SetCameraRange cam,0.5,10000 //MoveEnt cam, 0.74, 120,-25 MoveEnt cam, 0.74, 120,-25 TurnEnt cam, 45, 0, 0 // Floor (no function) plane=MakePlane(100,180) SetEntColor plane,MakeColor(100,100,50) PositionEnt plane,0,-2,100 // Paddle Global paddle = MakeCube() PositionEnt paddle, 0, 0, 30 ScaleMesh paddle, 10, 3, 2 AddEntBoxShape paddle,5,1.5,1 CollisionEnt( paddle, TYPE_PADDLE ) SetEntCastsShadows paddle // Walls Global bwall = MakeCube() PositionEnt bwall,0, 0, 180 ScaleMesh bwall,100,10,4 AddEntBoxShape bwall,50,5,2 SetEntColor(bwall,MakeColor(100,150,150)) CollisionEnt( bwall, TYPE_BORDER ) SetEntCastsShadows bwall Global rwall = MakeCube() PositionEnt rwall,50, 0, 100 ScaleMesh rwall,4,10,160 AddEntBoxShape rwall,2,5,80 SetEntColor(rwall,MakeColor(100,150,150)) CollisionEnt( rwall, TYPE_BORDER ) SetEntCastsShadows rwall Global lwall = MakeCube() PositionEnt lwall,-50, 0, 100 ScaleMesh lwall,4,10,160 AddEntBoxShape lwall,2,5,80 SetEntColor(lwall,MakeColor(100,150,150)) CollisionEnt( lwall, TYPE_BORDER ) SetEntCastsShadows lwall // Create Textes Global txtname = MakeText2D("Name: ",Font) SetEntWorld( txtname , world ) ScaleEnt( txtname , .15 , -.15 , .15 ) PositionEnt txtname,-46,10,35 RotateEnt txtname,20,-10,0 Global txtscore = MakeText2D("Score: ",Font) SetEntWorld( txtscore , world ) ScaleEnt( txtscore , .15 , -.15 , .15 ) PositionEnt txtscore,-47,5,35 RotateEnt txtscore,20,-10,0 Global txtlifes = MakeText2D("Lifes: ",Font) SetEntWorld( txtlifes , world ) ScaleEnt( txtlifes , .15 , -.15 , .15 ) PositionEnt txtlifes,35,10,35 RotateEnt txtlifes,20,10,0 Global txtlevel = MakeText2D("Level: ",Font) SetEntWorld( txtlevel , world ) ScaleEnt( txtlevel , .15 , -.15 , .15 ) PositionEnt txtlevel,35,5,35 RotateEnt txtlevel,20,10,0 // Read the start stuff ReadLevel(level) CreateBall(0,0,50,3,2) p1 = CreatePlayer("Mario") CurrentPlayer = p1 // -------------------------------------------------> Main Loop While Not KeyHit(1) If Do3DTweening() pl.Player = Object.Player(CurrentPlayer) If pl\lifes > 0 Then MovePaddle(CurrentPlayer) End If UpdateBalls() MoveCam() UpdateText() // Ballpushing If MouseDown(2) And gamestart = 1 Then For ba.Ball Each Ball ba\Vz=ba\vz+.05 Next End If // Left Mouse Click to kick the Ball If gamestart = 0 Then DeActivateEnt(paddle) If MouseHit(1) Then ActivateEnt(paddle) For ba.Ball Each Ball ba\Vx = RandF(-2,2) ba\Vz = RandF(1,2) Next gamestart = 1 End If Else FlushMouse() End If If BlocksInGame <=0 Then For ba.Ball Each Ball KillEnt( ba\entity ) Delete ba Next gamestart = 0 level = level + 1 If level > MaxLevel Then level = 1 ReadLevel(level) CreateBall(0,0,50,3,2) BallsInGame = 1 End If Print "Blocks: " + BlocksInGame Print "Balls: " + BallsInGame Print "FPS: " + GetFPS() End If Sync() Wend // -------------------------------------------------> Functions // Create ScoreText Function CreateScoreText(x#,y#,z#,t$) sc.ScoreText = New ScoreText sc\x = x sc\y = y sc\z = z sc\alpha = 255 sc\entity = MakeText2D(t$,Font) PositionEnt sc\entity ,x,y,z SetEntWorld( sc\entity , world ) ScaleEnt( sc\entity , .15 , -.15 , .15 ) EndFunction // Update Texts Function UpdateText() pl.Player = Object.Player(CurrentPlayer) SetEntText (txtname, "Player: " + pl\name) SetEntText (txtscore, "Score: " + pl\score) SetEntText (txtlevel, "Level: " + level) SetEntText (txtlifes, "Lifes: " + pl\lifes) For sc.ScoreText = Each ScoreText MoveEnt sc\entity,0,.3,0 SetEntColorAlpha(sc\entity,sc\alpha) sc\alpha = sc\alpha -5 If sc\alpha <=0 Then KillEnt sc\entity Delete sc End If Next EndFunction // Create Block Function CreateBlock(x#,y#,v$) typ% = Mid$( v$, 0, 1 ) hits% = Mid$( v$, 1, 1 ) r% = Mid$( v$, 2, 3 ) g% = Mid$( v$, 5, 3 ) b% = Mid$( v$, 8, 3 ) bl.Block = New Block bl\entity = MakeCube() bl\typ = typ bl\hits = hits PositionEnt bl\entity,x,0,y ScaleMesh bl\entity,12,6,6 AddEntBoxShape bl\entity,6,3,3 SetEntColor(bl\entity,MakeColor(r,g,b)) CollisionEnt( bl\entity, TYPE_BLOCKS ) BlocksInGame = BlocksInGame + 1 SetEntCastsShadows bl\entity EndFunction // Create Ball Function CreateBall(x#,y#,z#,r#,ms#,vx#=0,vz#=0) ba.Ball = New Ball ba\maxballspd = ms ba\x = x ba\y = y ba\z = z ba\r = r ba\Vx = vx ba\Vz = vz ba\entity = MakeSphere() SetEntTexture(ba\entity, balltex) PositionEnt ba\entity, x, y, z ScaleMesh ba\entity, r, r, r AddEntSphereShape ba\entity, r/2 SetEntHasFeedback ba\entity, 1 CollisionEnt( ba\entity, TYPE_BALL ) BallsInGame = BallsInGame + 1 EndFunction // Move Paddle Function MovePaddle(p) p1.Player = Object.Player(p) p1\x = p1\x + MouseSpeedX()*0.5 p1\oldx = GetEntPosX(paddle) If p1\x < -43 Then p1\x=-43 If p1\x > 43 Then p1\x=43 PositionEnt paddle,p1\x,0,30 PFx# = (GetEntPosX(paddle) - p1\oldx) SetMousePos Get3DWidth()/2, Get3DHeight()/2, wnd MouseSpeedX() End Function Function CreatePlayer(n$) pl.Player = New Player pl\name = n$ pl\x = 0 pl\oldx = 0 pl\lifes = 3 Return Handle(pl) EndFunction Function MoveCam() pl.Player = Object.Player(CurrentPlayer) PositionEnt cam, pl\x/50, GetEntPosY(cam),GetEntPosZ(cam) EndFunction // Update Balls Function UpdateBalls() // Update Collisions pl.Player = Object.Player(CurrentPlayer) For ba.Ball Each Ball For c = 1 To CountCollisions(ba\entity) Nx# = CollisionHitNormX#( ba\entity, c-1 ) Nz# = CollisionHitNormZ#( ba\entity, c-1 ) VdotN# = ba\Vx * Nx + ba\Vz * Nz NFx# = -2.0 * Nx * VdotN NFz# = -2.0 * Nz * VdotN If CollisionHitType(ba\entity, c-1) = TYPE_PADDLE And RealPaddle = True Then ba\Vx = ba\Vx + NFx + pl\PFx*0.5 ba\Vz = ba\Vz + NFz - Abs(pl\PFx*0.1) Else ba\Vx = ba\Vx + NFx ba\Vz = ba\Vz + NFz EndIf ba\ballspd = Sqr(ba\Vx * ba\Vx + ba\Vz * ba\Vz) If ba\ballspd > ba\maxballspd Then ba\Vx = ba\Vx / ba\ballspd * ba\maxballspd ba\Vz = ba\Vz / ba\ballspd * ba\maxballspd EndIf If ba\Vz = 0 Then ba\Vz = -.1 // If vz is 0, the ball never come back, just a quick and dirty solution ;) If ba\Vx = 0 Then ba\Vx = RandF(-.1,.1) If CollisionHitType(ba\entity, c-1) = TYPE_BLOCKS Then For bl.Block Each Block If bl\entity = CollisionHitEnt( ba\entity ) Then bl\hits = bl\hits - 1 If bl\hits <= 0 Then If bl\typ = 2 Then CreateBall(GetEntPosX(bl\entity),0,GetEntPosZ(bl\entity),3,2,RandF(-2,2),RandF(1,2)) CreateScoreText(GetEntPosX(bl\entity),GetEntPosY(bl\entity),GetEntPosZ(bl\entity),"Multiball") End If CreateScoreText(GetEntPosX(bl\entity),GetEntPosY(bl\entity),GetEntPosZ(bl\entity),"10") KillEnt( bl\entity ) Delete bl BlocksInGame = BlocksInGame - 1 pl\score = pl\score + 10 End If End If Next End If Next // Let the ball rolling ba\OldX# = ba\NewX# ba\OldY# = ba\NewY# ba\OldZ# = ba\NewZ# ba\NewX# = GetEntPosX(ba\entity, True) ba\NewY# = GetEntPosY(ba\entity, True) ba\NewZ# = GetEntPosZ(ba\entity, True) Mx# = (ba\NewX# - ba\OldX#) My# = (ba\NewY# - ba\OldY#) Mz# = (ba\NewZ# - ba\OldZ#) XAngleAdjust# = ((Mx# / 3) * (180.0/Pi))*1000000 YAngleAdjust# = ((My# / 3) * (180.0/Pi))*1000000 ZAngleAdjust# = ((Mz# / 3) * (180.0/Pi))*1000000 TurnEntLocal ba\entity,ZAngleAdjust#,0,-XAngleAdjust#,True // fix ball stucking in paddle pl.Player = Object.Player(CurrentPlayer) If GetEntPosZ(ba\entity) < GetEntPosZ(paddle) And GetEntPosZ(ba\entity) > (GetEntPosZ(paddle)+GetEntScaleZ(paddle)) Then If GetEntPosX(ba\entity) > GetEntPosX(paddle) And GetEntPosX(ba\entity) < (GetEntPosX(paddle)+GetEntPosX(paddle)) Then PositionEnt ba\entity,GetEntPosX(ba\entity),0,GetEntPosZ(paddle)+ba\r DeActivateEnt(paddle) Else ActivateEnt(paddle) End If End If TranslateEnt ba\entity,ba\Vx,0,ba\Vz PositionEnt ba\entity,GetEntPosX(ba\entity),0,GetEntPosZ(ba\entity) // Ball Lost If GetEntPosZ(ba\entity) < 0 Or GetEntPosZ(ba\entity) > 185 Or GetEntPosX(ba\entity) < -55 Or GetEntPosX(ba\entity) > 55 Then BallsInGame = BallsInGame -1 KillEnt ba\entity Delete ba End If // Next Life If BallsInGame <= 0 Then CreateBall(0,0,50,3,2) gamestart = 0 pl\lifes = pl\lifes - 1 If pl\lifes = 0 Then Notice "Game Over!" End EndIf End If Next EndFunction Function ReadLevel(l) Select l Case 1 Restore Level1 Case 2 Restore Level2 Case 3 Restore Level3 Case 4 Restore Level4 End Select For y = 150 To 80 Step -12 For x = -30 To 30 Step 15 Read value$ If value$ <> "00000000000" Then CreateBlock(x,y,value) Next Next CreateScoreText(0,0,50,"Level" +level) EndFunction // -------------------------------------------------> Level Data /* Typ|Hits|RRR|GGG|BBB Data "00000000000", "00000000000", "00000000000", "00000000000", "00000000000" Data "00000000000", "00000000000", "00000000000", "00000000000", "00000000000" Data "00000000000", "00000000000", "00000000000", "00000000000", "00000000000" Data "00000000000", "00000000000", "00000000000", "00000000000", "00000000000" Data "00000000000", "00000000000", "00000000000", "00000000000", "00000000000" Data "00000000000", "00000000000", "00000000000", "00000000000", "00000000000" Typ: 1 = normal 2 = new Ball */ // Level 1 Blocktypes .Level1 Data "00000000000", "00000000000", "00000000000", "00000000000", "00000000000" Data "00000000000", "00000000000", "00000000000", "00000000000", "00000000000" Data "11255000255", "11255000255", "21255000255", "11255000255", "11255000255" Data "11255255000", "11255255000", "11255255000", "11255255000", "11255255000" Data "00000000000", "00000000000", "00000000000", "00000000000", "00000000000" Data "00000000000", "00000000000", "00000000000", "00000000000", "00000000000" .Level2 Data "00000000000", "00000000000", "00000000000", "00000000000", "00000000000" Data "11255000000", "11255000000", "00000000000", "11255000000", "11255000000" Data "11255000000", "11255000000", "21255000000", "11255000000", "11255000000" Data "00000000000", "11255000000", "21255000000", "11255000000", "00000000000" Data "00000000000", "00000000000", "21255000000", "00000000000", "00000000000" Data "00000000000", "00000000000", "00000000000", "00000000000", "00000000000" .Level3 Data "11255000255", "00000000000", "11255000255", "00000000000", "21255000255" Data "00000000000", "11255000255", "00000000000", "11255000255", "00000000000" Data "00000000000", "00000000000", "00000000000", "00000000000", "00000000000" Data "00000000000", "11255000255", "00000000000", "11255000255", "00000000000" Data "21255000255", "00000000000", "11255000255", "00000000000", "11255000255" Data "00000000000", "00000000000", "00000000000", "00000000000", "00000000000" .Level4 Data "12150150150", "11000255255", "22150150150", "11000255255", "12150150150" Data "22150150150", "11000255255", "12150150150", "11000255255", "22150150150" Data "12150150150", "11000255255", "22150150150", "11000255255", "12150150150" Data "22150150150", "11000255255", "12150150150", "11000255255", "22150150150" Data "12150150150", "11000255255", "22150150150", "11000255255", "12150150150" Data "22150150150", "11000255255", "12150150150", "11000255255", "22150150150" |
||
BIG BUG |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Interessant, Nuclear Basic scheint ein inoffizielles B3D V2.0 zu sein.
Syntax ist zu großen Teilen identisch und B3D-Format kann es auch... Schade dass im Forum nicht sehr viel los ist und das ganze dadurch doch recht klein wirkt. |
||
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final) |
head2003 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja die Sprache ist wirklich eine Art modernisierte B3D Version. Solange man nur unter Windows programmiert und das B3D Gefühl nicht vermissen will, ist es echt nice.
Die Community ist leider wirklich sehr klein, was mich wundert.. Es gibt schlechtere Sprachen mit größerer Community. Da die Sprache ja aber der B3D Sprache sehr ähnlich ist, kommt man auch ganz gut mit der B3D Community zurecht, da irgendwie bald jede Frage schon beantwortet wurde und unter NB sehr ähnlich zu lösen ist ![]() |
||
![]() |
tft |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
allerdings gibt es noch 1 bis 2 Sehr ärgerliche Bugs. Die das Speicher Interface betreffen. Die einem zum Wahnsinn treiben können. Ansonsten gebe ich dir recht. Läuft ansonsten gut. Leider sind über die hälfte der coolen Befehle nicht dokumentiert. Es fehlen fiele Funktions Beschreibungen. Die Netzwerk Funktionen sind auch noch nicht 100%. Sie machen zufiele verschiedene Sachen ohne eines erstmal richtig fertig zu machen. Gruss TFT |
||
TFT
https://www.sourcemagic.ch Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group