3 Probleme auf einmal (Überraschungsei)
Übersicht

phpmännchenBetreff: 3 Probleme auf einmal (Überraschungsei) |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo liebe BB Gemeinschaft,
ich habe hier ein kleines Programmchen geschrieben und habe 3 Dinge mit denen ich nicht mehr weiter komme. 1. Ich möchte das der Beenden Button bei betätigung mit der Maus das Programm schliesst. Habs schon mit MouseHit versucht aber nicht hinbekommen. 2. Bei Mouseover bettet sich leider nur der Start Buttom ein und der Beenden Buttom leider nicht. Wie kommt dies? Besser währe es wenn diese Funktion beim betätigen mit der Maus funktioniert aber das bekomme ich erst recht noch nicht hin. 3. Wie ist es möglich nach betätigung des start Buttoms in ein anderes Script zu springen (Das alte also beenden und ein anderes aufrufen ohne das das Fenster schliesst. Hier habe ich meinen Code mal beigefügt. Er funst auch soweit bis auf die drei Probleme. Vieleicht (ganz bestimmt habt Ihr nen rat) Code: [AUSKLAPPEN] Graphics 1024,768,16,2 kanal = PlayMusic("start.mp3") SetBuffer BackBuffer() HidePointer Maus = LoadImage("maus.bmp") Global Wahl = 0 Repeat Cls bildvariable = LoadImage("1.bmp") DrawBlock bildvariable, 110, 80 MaskImage bildvariable, r, g, b Mx=MouseX() My=MouseY() Button(680,600,100,20,"Start",58,58,58,255,255,255,0,1) Button(780,600,100,20,"Beenden",58,58,58,255,255,255,0,2) If RectsOverlap(Mx,My,1,1,680,600,100,20) Then Wahl = 1 : Text 420,384,"Gleich gehts los!" If RectsOverlap(Mx,My,1,1,780,600,100,20) Then Wahl = 2 : Text 384,384,"Wollen Sie Mara wirklich schon beenden?" ;------------------Maus Zeichen----------------------------------- Color 0,0,0 Rect Mx,My,1,1,1 DrawImage Maus,Mx,My ;----------------------------------------------------------------- Color 255,255,255 Text 20,20,"Wahl : "+ Wahl Flip Until KeyHit(1) Function Button(Bx,By,weite,hoehe,Txt$,Rot,Gruen,Blau,Rot2,Gruen2,Blau2,Defaultnummer, Wahln) If Wahl = wahln Then Color Rot,Gruen,Blau Rect Bx,By,weite,hoehe,1 Color 120,120,120 Line Bx,By,Bx+weite,By Line Bx,By+1,Bx+weite,By+1 Line Bx+1,By+hoehe,Bx+1,By Line Bx,By+hoehe,Bx,By Color 255,255,255 Line Bx,By+hoehe,Bx+weite,By+hoehe Line Bx,By+hoehe-1,Bx+weite,By+hoehe-1 Line Bx+weite,By,Bx+weite,By+hoehe Line Bx+weite-1,By+2,Bx+weite-1,By+hoehe-2 Else Color Rot,Gruen,Blau Rect Bx,By,weite,hoehe,1 Color 255,255,255 Line Bx,By,Bx+weite,By Line Bx,By+1,Bx+weite,By+1 Line Bx+1,By+hoehe,Bx+1,By Line Bx,By+hoehe,Bx,By Color 120,120,120 Line Bx,By+hoehe,Bx+weite,By+hoehe Line Bx,By+hoehe-1,Bx+weite,By+hoehe-1 Line Bx+weite,By,Bx+weite,By+hoehe Line Bx+weite-1,By+2,Bx+weite-1,By+hoehe-2 EndIf If Not RectsOverlap(Mx,My,1,1,Bx,By,weite,hoehe) Then Wahl = 0 Color Rot2,Gruen2,Blau2 Text Bx+(weite/2),By+(hoehe/2),Txt$,1,1 End Function Gruß |
||
![]() |
robotx |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hier probier dies mal aus!
Das RectsOverlap mit dem du prüfst, ob der Mauszeiger über dem Button ist, habe ich in die Function Button () gemacht. Somit werden beide Buttons überprüft. Sonst ist der Code eigentlich selbsterklärend. ![]() Zu Drittens: Schau mal hier https://www.blitzforum.de/foru...pielaufbau Code: [AUSKLAPPEN] Graphics 1024,768,16,2 SetBuffer BackBuffer() HidePointer Global Wahl = 0 Global mh_1 Global Mx,My Maus = LoadImage("maus.bmp") ;bildvariable = LoadImage("1.bmp") Repeat Cls ;DrawBlock bildvariable, 110, 80 ;MaskImage bildvariable, r, g, b Mx=MouseX() My=MouseY() mh_1 = MouseHit(1) Button(780,600,100,20,"Beenden",58,58,58,255,255,255,0,2) Button(680,600,100,20,"Start",58,58,58,255,255,255,0,1) ;------------------Maus Zeichen----------------------------------- Color 0,0,0 Rect Mx,My,1,1,1 DrawImage Maus,Mx,My ;----------------------------------------------------------------- Color 255,255,255 Text 20,20,"Wahl : "+ Wahl Flip Until KeyHit(1) End Function Button(Bx,By,weite,hoehe,Txt$,Rot,Gruen,Blau,Rot2,Gruen2,Blau2,Defaultnummer,Wahln) If RectsOverlap(Mx,My,1,1,Bx,By,weite,hoehe) Then Wahl = wahln If Wahl = 1 Then Text 420,384,"Gleich gehts los!" ElseIf Wahl = 2 Then Text 384,384,"Wollen Sie Mara wirklich schon beenden?" Endif Color Rot,Gruen,Blau Rect Bx,By,weite,hoehe,1 Color 120,120,120 Line Bx,By,Bx+weite,By Line Bx,By+1,Bx+weite,By+1 Line Bx+1,By+hoehe,Bx+1,By Line Bx,By+hoehe,Bx,By Color 255,255,255 Line Bx,By+hoehe,Bx+weite,By+hoehe Line Bx,By+hoehe-1,Bx+weite,By+hoehe-1 Line Bx+weite,By,Bx+weite,By+hoehe Line Bx+weite-1,By+2,Bx+weite-1,By+hoehe-2 If mh_1 Then If Wahl = 1 Then Spielfunction () ElseIf Wahl=2 Then Endefunction() Endif Endif Endif IF Wahl <> wahln Then Color Rot,Gruen,Blau Rect Bx,By,weite,hoehe,1 Color 255,255,255 Line Bx,By,Bx+weite,By Line Bx,By+1,Bx+weite,By+1 Line Bx+1,By+hoehe,Bx+1,By Line Bx,By+hoehe,Bx,By Color 120,120,120 Line Bx,By+hoehe,Bx+weite,By+hoehe Line Bx,By+hoehe-1,Bx+weite,By+hoehe-1 Line Bx+weite,By,Bx+weite,By+hoehe Line Bx+weite-1,By+2,Bx+weite-1,By+hoehe-2 EndIf If Not RectsOverlap(Mx,My,1,1,Bx,By,weite,hoehe) Then Wahl = 0 Color Rot2,Gruen2,Blau2 Text Bx+(weite/2),By+(hoehe/2),Txt$,1,1 End Function Function Spielfunction () FlushKeys () Repeat Cls Text 100,100,"Wir sind im Spiel!!" Flip Until KeyHit (1) End End Function Function Endefunction () End End Function mfg robotx |
||
www.botbomb.robotzgames.de
www.robotzgames.de |
- Zuletzt bearbeitet von robotx am Mi, Sep 13, 2006 11:05, insgesamt einmal bearbeitet
Omenaton_2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du hast nicht den ganzen Code gepostet, die Definition von manchen Variablen ist nicht zu sehen und wo ist der Teil, wo Maustaste gechecked wird ? So unvollständig kann man nur schwer ein Urteil machen.
Ich habe mir nicht alles genau angeschaut (keine Zeit, keine Lust), aber etwas kann ich sagen. Die 2 Zeilen unten gehören auf keinen Fall in eine Schleife, verschiebe sie an den Anfang des Programmes, soll nur 1 Mal ausgeführt werden: bildvariable = LoadImage("1.bmp") MaskImage bildvariable, r, g, b Grunsätzlich sollten Grafiken und Sounds nur ein einziges Mal geladen werden und zwar am Anfang, als Vorbereitung vor dem eigentlichen Programm. Ich persönlich habe Buttons noch niemals mit ImagesOverlap gemacht, sondern ich checke immer die Koordinaten. Wenn der Mauszeiger innerhalb der Linken oberen und der rechten unteren Ecke des Buttons ist und die Maustaste betätigt wird, dann wurde der Button gedrückt. Das ist übersichtlicher. Aber, mit ImagesOverlap kann das auch funktionieren, kein Problem. |
||
phpmännchenBetreff: Danke erstmal, Funst soweit.... |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Jippi...
Danke Danke... an ---> robotx Der text is jetzt soweit klar, habe gesehen was ich falsch gemacht habe. Aber wie stelle ich jetzt den wechsel an? Code: [AUSKLAPPEN] Function Spielfunction ()
FlushKeys () Repeat Cls Text 100,100,"Wir sind im Spiel!!" Flip Until KeyHit (1) End End Function hier kann ich include ja nicht machen. Wie sag ich ihm nun das er zu gras.bb wechselt? Währe um Hilfe stellung sehr begeistert. Und Omenaton_2 das is das ganze Script was geladen ist! :-) |
||
![]() |
robotx |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der Include Befehl kopiert im Grunde nur den Code aus der anderen Datei. Deshalb darfst du, natürlich keine Globals, Functionen usw. in der Include haben, wenn du sie in einer Function lädst. Ansonsten geht es auch eine Include in einer Function zu laden.
Deshalb solange wir nicht wissen, was in der Include steht kann man dir auch nicht wirklich helfen. Wenn ich eine Include benutze, lade ich sie meistens ganz am Anfang, weil ich nur Functionen drin stehen habe. => kurze Rede, kurzer Sinn: Solange wir nicht wissen, was in deiner Gras.bb steht und was du mit ihr machen willst, können wir nur herumraten und nichts konkretes sagen! mfg robotx |
||
www.botbomb.robotzgames.de
www.robotzgames.de |
phpmännchenBetreff: hier die Gras.bb |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
In diese Datei soll gesprungen werden!
Hier der Code (dort sind Global drinnen) Code: [AUSKLAPPEN] Graphics3D 1024,768,16,1
SetBuffer BackBuffer() WBuffer 0 Global fps_frames,fps_ms,fps_anzeige# ; Kamrea und so einrichten Global main_pivot = CreatePivot() Global cam = CreateCamera(main_pivot) PositionEntity cam,256,0,460 RotateEntity cam,0,180,0 CameraRange cam,1,300 CameraFogMode cam,1 CameraFogRange cam,150,300 CameraFogColor cam,190,210,245 EntityType cam, 2 MoveEntity cam,0,3,-3 TurnEntity cam,20,0,0 ; Skybox laden Global skybox = LoadSkyBox(main_pivot) ; Licht setzen main_light = CreateLight() MoveEntity main_light,20,50,0 PointEntity main_light, main_pivot ; Terrain erstellen ter = LoadTerrain("gfx/hmap2.bmp") ScaleEntity ter,20,50,20 TerrainDetail ter,1500,1 TerrainShading ter,1 ; Terraintextur laden ter_tex = LoadTexture("gfx/tex1.bmp") EntityTexture ter, ter_tex ScaleTexture ter_tex,5,5 ; Gras erstellen Dim grass(1,1) Global gtex CreateGrass(ter,ter_tex,"gfx/gras.png") ; Nen paar Variablen setzen ; .. für Zeit Global gaspeed# lastmsc = MilliSecs() ; .. für Gras Global lod = 1 wogen = 1 Repeat ; Echtzeitberechnungen msc = MilliSecs() gaspeed# = Float#(msc-lastmsc)/20.00 lastmsc = msc ; Kamereasteuerung TurnEntity cam,MouseYSpeed(),-MouseXSpeed(),0 MoveMouse 400,300 RotateEntity cam,EntityPitch(cam),EntityYaw(cam),0 MoveEntity cam,(KeyDown(205)-KeyDown(203))*gaspeed#/2,0,(KeyDown(200)-KeyDown(208))*gaspeed#/2 PositionEntity cam,EntityX(cam),TerrainY(ter,EntityX(cam),0,EntityZ(cam))+6,EntityZ(cam) ; Umgebung updaten UpdateEnviron() If Rand(0,1) Then ;Gras-LOD berechnen (Entferntes Gras nich zeichnen) UpdateGrass(ter) EndIf ; Gras im Wind wogen lassen If wogen RotateTexture gtex,Cos(Msc/10)*2.2 Else RotateTexture gtex,0 EndIf ; Welt rendern RenderWorld() ; Ein-/Ausschalten von verschiedenen Dingen If KeyHit(2) Then lod = 1 - lod ; Dem Gras-LOD If KeyHit(3) Then wogen = 1 - wogen ; Dem Gras-Wogen If KeyHit(17)Then wire = 1 - wire : WireFrame wire ; Wireframemodus ein/aus ; Texte teichnen... Zu erst die Schatten, versteht sich Color 0,0,0 Text 2,2,"Tris: "+TrisRendered() Text 2,17,"FPS: "+util_fps() Text 302,2,"LOD(1): "+lod+" Wogen(2): "+wogen + " Wireframe(W): "+wired Text 862,752,"test" Color 255,255,255 Text 0,0,"Tris: "+TrisRendered() Text 0,15,"FPS: "+Int(fps_anzeige) Text 300,0,"LOD(1): "+lod+" Wogen(2): "+wogen + " Wireframe(W): "+wired Text 860,750,"test" Flip 0 Until KeyHit(1) End Function UpdateEnviron() PositionEntity skybox,EntityX(cam,0),EntityY(cam,0),EntityZ(cam,0) TurnEntity skybox,0,.01*gaspeed#,0 End Function Function LoadSkyBox( parent=0 ) m=CreateMesh(parent) ;front face b=LoadBrush( "gfx/sky_f.bmp",49 ) s=CreateSurface( m,b ) AddVertex s,-1,+1,-1,0,0:AddVertex s,+1,+1,-1,1,0 AddVertex s,+1,-1,-1,1,1:AddVertex s,-1,-1,-1,0,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ;right face b=LoadBrush( "gfx/sky_l.bmp",49 ) s=CreateSurface( m,b ) AddVertex s,+1,+1,-1,0,0:AddVertex s,+1,+1,+1,1,0 AddVertex s,+1,-1,+1,1,1:AddVertex s,+1,-1,-1,0,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ;back face b=LoadBrush( "gfx/sky_b.bmp",49 ) s=CreateSurface( m,b ) AddVertex s,+1,+1,+1,0,0:AddVertex s,-1,+1,+1,1,0 AddVertex s,-1,-1,+1,1,1:AddVertex s,+1,-1,+1,0,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ;left face b=LoadBrush( "gfx/sky_r.bmp",49 ) s=CreateSurface( m,b ) AddVertex s,-1,+1,+1,0,0:AddVertex s,-1,+1,-1,1,0 AddVertex s,-1,-1,-1,1,1:AddVertex s,-1,-1,+1,0,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ;top face b=LoadBrush( "gfx/sky_u.bmp",49 ) s=CreateSurface( m,b ) AddVertex s,-1,+1,+1,0,1:AddVertex s,+1,+1,+1,0,0 AddVertex s,+1,+1,-1,1,0:AddVertex s,-1,+1,-1,1,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ;bottom face b=LoadBrush( "gfx/sky_d.bmp",49 ) s=CreateSurface( m,b ) AddVertex s,-1,-1,-1,1,0:AddVertex s,+1,-1,-1,1,1 AddVertex s,+1,-1,+1,0,1:AddVertex s,-1,-1,+1,0,0 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ScaleMesh m,5,5,5 EntityOrder m,1 FlipMesh m EntityFX m,1 Return m End Function ; Diese funktion erstellt das Gras Function CreateGrass(ter,ttex,texp$) Local vert[3] gpiv = CreatePivot() tex = LoadTexture(texp,2) gtex = tex ; Das Gras besteht aus 10x10 Meshs. Dim grass(9,9) For sx = 0 To 9 For sz = 0 To 9 gmesh = CreateMesh(gpiv) EntityTexture gmesh,tex gsur = CreateSurface(gmesh) PositionEntity gmesh,sx*64,0,sz*64 EntityFX gmesh,1+16+2 ; In jedem Mesh gibt's 16x16 Sprites For x = 0 To 15 For z = 0 To 15 vx1# = x*4+Rnd(-8,8) vz1# = z*4+Rnd(-8,8) vx2# = x*4+Rnd(-8,8) vz2# = z*4+Rnd(-8,8) vert[0] = AddVertex(gsur,vx1,TerrainY(ter,vx1+sx*64,0,vz1+sz*64)-.1,vz1,0,.9) vert[1] = AddVertex(gsur,vx1,TerrainY(ter,vx1+sx*64,0,vz1+sz*64)+Rnd(3,5.5),vz1,0,0) vert[2] = AddVertex(gsur,vx2,TerrainY(ter,vx2+sx*64,0,vz2+sz*64)-.1,vz2,.9,.9) vert[3] = AddVertex(gsur,vx2,TerrainY(ter,vx2+sx*64,0,vz2+sz*64)+Rnd(3,5.5),vz2,.9,0) AddTriangle(gsur,vert[0],vert[1],vert[2]) AddTriangle(gsur,vert[1],vert[2],vert[3]) r = Rand(75,85) g = Rand(195,230) b = Rand(75,85) VertexColor gsur,vert[0],r,g,b VertexColor gsur,vert[1],r,g,b VertexColor gsur,vert[2],r,g,b VertexColor gsur,vert[3],r,g,b Next Next grass(sx,sz) = gmesh Next Next Return gpiv End Function ; Updatet das Gras während des Ausführens Function UpdateGrass(ter) If lod = 0 Then ; Ist das LOD deaktiviert, so werden alle Grasmeshs einfach so angezeigt For x = 0 To 9 For z = 0 To 9 ShowEntity grass(x,z) PositionEntity grass(x,z),x*64,TerrainY(ter,x,0,z),z*64 Next Next Else ; Ist das LOD aktiviert, so werden weiter entfernte Grasmeshs versteckt, davor tiefer gezeichnet For x = 0 To 9 For z = 0 To 9 dist# = Sqr((EntityX(cam,0)-x*64)^2+(EntityZ(cam,0)-z*64)^2) If dist<= 250 ShowEntity grass(x,z) PositionEntity grass(x,z),x*64,TerrainY(ter,x,0,z)-dist/60+.5,z*64 Else HideEntity grass(x,z) EndIf Next Next EndIf End Function Function Util_Fps() fps_frames=fps_frames+1 If MilliSecs()-fps_ms >= 1000 Then fps_anzeige=fps_frames fps_frames=0 fps_ms=MilliSecs() EndIf Return fps_anzeige End Function Ich möchte halt vom menü in diese Datei wechseln. |
||
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
Du kannst eine Include auch in eine Function einfügen.
Code: [AUSKLAPPEN] Function blaah()
Include blupp EndFunction Oder Du deklarierst in Deiner Include eine Hauptfunktion, fügst sie am Anfang des Programmcodes ein und rufst dann jene Funktion an entsprechender Stelle auf. Übrigens isses kein Skript. ![]() |
||
phpmännchen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ava hat Folgendes geschrieben: Du kannst eine Include auch in eine Function einfügen.
Code: [AUSKLAPPEN] Function blaah()
Include blupp EndFunction Oder Du deklarierst in Deiner Include eine Hauptfunktion, fügst sie am Anfang des Programmcodes ein und rufst dann jene Funktion an entsprechender Stelle auf. Übrigens isses kein Skript. :wink: Include würde ich ja gerne machen, geht aber wegen " Global " nicht, sowie man das " Global " umwandeln kann in grass.bb so das es geht! |
||
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
such mal bei faq und tutorials nach dem autor suco-x, er hat nen tutorial über Aufbau und strukturierung eines Spiels geschrieben, dafür wirst du fast deinen kompletten Code neu schrieben müssen, aber es wird sich sehr wahrscheinlich lohnen. | ||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
![]() |
robotx |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, alles in einem (ohne Include):
Code: [AUSKLAPPEN] Graphics3D 1024,768,16,1 SetBuffer BackBuffer() WBuffer 0 HidePointer Const game_pause = 1 Const game_menue = 2 Const game_haupt = 3 Const game_over = 4 Global game_zustand = game_menue ;-------------------------------------------------------------------------------------------------------------- ;---Hier kommen alle Globalen Variablen hin------------------------------- ;----------------------------------------------------------------------- ;Für das Menue Global Maus = LoadImage("maus.png") ;Global bildvariable = LoadImage("1.bmp") Global Wahl = 0 Global mh_1 Global Mx,My ;------------------------------------------------------------------------ ;Für das Hauptprogramm ; Kamrea und so einrichten Global main_pivot = CreatePivot() Global cam = CreateCamera(main_pivot) PositionEntity cam,256,0,460 RotateEntity cam,0,180,0 CameraRange cam,1,300 CameraFogMode cam,1 CameraFogRange cam,150,300 CameraFogColor cam,190,210,245 EntityType cam, 2 MoveEntity cam,0,3,-3 TurnEntity cam,20,0,0 ; Skybox laden Global skybox = LoadSkyBox(main_pivot) ; Licht setzen Global main_light = CreateLight() MoveEntity main_light,20,50,0 PointEntity main_light, main_pivot ; Terrain erstellen Global ter = LoadTerrain("gfx/hmap2.bmp") ScaleEntity ter,20,50,20 TerrainDetail ter,1500,1 TerrainShading ter,1 ; Terraintextur laden Global ter_tex = LoadTexture("gfx/tex1.bmp") EntityTexture ter, ter_tex ScaleTexture ter_tex,5,5 ; Gras erstellen Dim grass(9,9) Global gtex CreateGrass(ter,ter_tex,"gfx/gras.png") Global fps_frames,fps_ms,fps_anzeige# ; Nen paar Variablen setzen ; .. für Zeit Global gaspeed# Global lastmsc = MilliSecs() ; .. für Gras Global lod = 1 Global wogen = 1 ;-------------------------------------------------------------------------------------------------------------- ;Wichtig. Hauptschleife. Hier wird das ganze Spiel verwaltet. Repeat Select game_zustand Case game_menue GameMenue() Case game_haupt GameHaupt() Case game_pause GamePause() End Select Until game_zustand = game_over End;----------------------------------------------------------------------------------------------------------------------------- Function GameMenue() Local temp_zustand = game_zustand FlushMouse() FlushKeys() Repeat Cls ;----------------------------------------------------------------------------------- ;DrawBlock bildvariable, 110, 80 ;MaskImage bildvariable, r, g, b Mx=MouseX() My=MouseY() mh_1 = MouseHit(1) Button(780,600,100,20,"Beenden",58,58,58,255,255,255,0,2) Button(680,600,100,20,"Start",58,58,58,255,255,255,0,1) ;------------------Maus Zeichen---------------- Color 0,0,0 Rect Mx,My,1,1,1 DrawImage Maus,Mx,My ;--------------------------------------------- Color 255,255,255 Text 20,20,"Wahl : "+ Wahl ;------------------------------------------------------------------------------------ Flip Until game_zustand<>temp_zustand End Function Function Button(Bx,By,weite,hoehe,Txt$,Rot,Gruen,Blau,Rot2,Gruen2,Blau2,Defaultnummer,Wahln) If RectsOverlap(Mx,My,1,1,Bx,By,weite,hoehe) Then Wahl = wahln If Wahl = 1 Then Text 420,384,"Gleich gehts los!" ElseIf Wahl = 2 Then Text 384,384,"Wollen Sie Mara wirklich schon beenden?" Endif Color Rot,Gruen,Blau Rect Bx,By,weite,hoehe,1 Color 120,120,120 Line Bx,By,Bx+weite,By Line Bx,By+1,Bx+weite,By+1 Line Bx+1,By+hoehe,Bx+1,By Line Bx,By+hoehe,Bx,By Color 255,255,255 Line Bx,By+hoehe,Bx+weite,By+hoehe Line Bx,By+hoehe-1,Bx+weite,By+hoehe-1 Line Bx+weite,By,Bx+weite,By+hoehe Line Bx+weite-1,By+2,Bx+weite-1,By+hoehe-2 If mh_1 Then If Wahl = 1 Then game_zustand = game_haupt ElseIf Wahl=2 Then game_zustand = game_over Endif Endif Endif IF Wahl <> wahln Then Color Rot,Gruen,Blau Rect Bx,By,weite,hoehe,1 Color 255,255,255 Line Bx,By,Bx+weite,By Line Bx,By+1,Bx+weite,By+1 Line Bx+1,By+hoehe,Bx+1,By Line Bx,By+hoehe,Bx,By Color 120,120,120 Line Bx,By+hoehe,Bx+weite,By+hoehe Line Bx,By+hoehe-1,Bx+weite,By+hoehe-1 Line Bx+weite,By,Bx+weite,By+hoehe Line Bx+weite-1,By+2,Bx+weite-1,By+hoehe-2 EndIf If Not RectsOverlap(Mx,My,1,1,Bx,By,weite,hoehe) Then Wahl = 0 Color Rot2,Gruen2,Blau2 Text Bx+(weite/2),By+(hoehe/2),Txt$,1,1 End Function Function Endefunction () End End Function Function GamePause() Local temp_zustand = game_zustand FlushKeys() FlushMouse() Repeat ClsColor 0,0,0 Cls Color 0,0,255 Text GraphicsWidth()/2,GraphicsHeight()/2,"ICH BIN DIE PAUSE!!!",1,1 If KeyHit(57) game_zustand = game_haupt EndIf Flip Until game_zustand<>temp_zustand End Function Function GameHaupt() Local temp_zustand = game_zustand FlushKeys() FlushMouse() Repeat ;------------------------------------------------------------------------------------------------------------------ ;------Hier ist die Hauptschleife---------------------------------------------------------------------------------- ; Echtzeitberechnungen msc = MilliSecs() gaspeed# = Float#(msc-lastmsc)/20.00 lastmsc = msc ; Kamereasteuerung TurnEntity cam,MouseYSpeed(),-MouseXSpeed(),0 MoveMouse 400,300 RotateEntity cam,EntityPitch(cam),EntityYaw(cam),0 MoveEntity cam,(KeyDown(205)-KeyDown(203))*gaspeed#/2,0,(KeyDown(200)-KeyDown(208))*gaspeed#/2 PositionEntity cam,EntityX(cam),TerrainY(ter,EntityX(cam),0,EntityZ(cam))+6,EntityZ(cam) ; Umgebung updaten UpdateEnviron() If Rand(0,1) Then ;Gras-LOD berechnen (Entferntes Gras nich zeichnen) UpdateGrass(ter) EndIf ; Gras im Wind wogen lassen If wogen RotateTexture gtex,Cos(Msc/10)*2.2 Else RotateTexture gtex,0 EndIf ; Welt rendern RenderWorld() ; Ein-/Ausschalten von verschiedenen Dingen If KeyHit(2) Then lod = 1 - lod ; Dem Gras-LOD If KeyHit(3) Then wogen = 1 - wogen ; Dem Gras-Wogen If KeyHit(17)Then wire = 1 - wire : WireFrame wire ; Wireframemodus ein/aus ; Texte teichnen... Zu erst die Schatten, versteht sich Color 0,0,0 Text 2,2,"Tris: "+TrisRendered() Text 2,17,"FPS: "+util_fps() Text 302,2,"LOD(1): "+lod+" Wogen(2): "+wogen + " Wireframe(W): "+wired Text 862,752,"test" Color 255,255,255 Text 0,0,"Tris: "+TrisRendered() Text 0,15,"FPS: "+Int(fps_anzeige) Text 300,0,"LOD(1): "+lod+" Wogen(2): "+wogen + " Wireframe(W): "+wired Text 860,750,"test" ;------------------------------------------------------------------------------------------------------------------ If KeyHit(57) game_zustand = game_pause EndIf If KeyHit(1) game_zustand = game_menue EndIf Flip 0 Until game_zustand<>temp_zustand End Function Function UpdateEnviron() PositionEntity skybox,EntityX(cam,0),EntityY(cam,0),EntityZ(cam,0) TurnEntity skybox,0,.01*gaspeed#,0 End Function Function LoadSkyBox( parent=0 ) m=CreateMesh(parent) ;front face b=LoadBrush( "gfx/sky_f.bmp",49 ) s=CreateSurface( m,b ) AddVertex s,-1,+1,-1,0,0:AddVertex s,+1,+1,-1,1,0 AddVertex s,+1,-1,-1,1,1:AddVertex s,-1,-1,-1,0,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ;right face b=LoadBrush( "gfx/sky_l.bmp",49 ) s=CreateSurface( m,b ) AddVertex s,+1,+1,-1,0,0:AddVertex s,+1,+1,+1,1,0 AddVertex s,+1,-1,+1,1,1:AddVertex s,+1,-1,-1,0,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ;back face b=LoadBrush( "gfx/sky_b.bmp",49 ) s=CreateSurface( m,b ) AddVertex s,+1,+1,+1,0,0:AddVertex s,-1,+1,+1,1,0 AddVertex s,-1,-1,+1,1,1:AddVertex s,+1,-1,+1,0,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ;left face b=LoadBrush( "gfx/sky_r.bmp",49 ) s=CreateSurface( m,b ) AddVertex s,-1,+1,+1,0,0:AddVertex s,-1,+1,-1,1,0 AddVertex s,-1,-1,-1,1,1:AddVertex s,-1,-1,+1,0,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ;top face b=LoadBrush( "gfx/sky_u.bmp",49 ) s=CreateSurface( m,b ) AddVertex s,-1,+1,+1,0,1:AddVertex s,+1,+1,+1,0,0 AddVertex s,+1,+1,-1,1,0:AddVertex s,-1,+1,-1,1,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ;bottom face b=LoadBrush( "gfx/sky_d.bmp",49 ) s=CreateSurface( m,b ) AddVertex s,-1,-1,-1,1,0:AddVertex s,+1,-1,-1,1,1 AddVertex s,+1,-1,+1,0,1:AddVertex s,-1,-1,+1,0,0 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ScaleMesh m,5,5,5 EntityOrder m,1 FlipMesh m EntityFX m,1 Return m End Function ; Diese funktion erstellt das Gras Function CreateGrass(ter,ttex,texp$) Local vert[3] gpiv = CreatePivot() tex = LoadTexture(texp,2) gtex = tex ; Das Gras besteht aus 10x10 Meshs. For sx = 0 To 9 For sz = 0 To 9 gmesh = CreateMesh(gpiv) EntityTexture gmesh,tex gsur = CreateSurface(gmesh) PositionEntity gmesh,sx*64,0,sz*64 EntityFX gmesh,1+16+2 ; In jedem Mesh gibt's 16x16 Sprites For x = 0 To 15 For z = 0 To 15 vx1# = x*4+Rnd(-8,8) vz1# = z*4+Rnd(-8,8) vx2# = x*4+Rnd(-8,8) vz2# = z*4+Rnd(-8,8) vert[0] = AddVertex(gsur,vx1,TerrainY(ter,vx1+sx*64,0,vz1+sz*64)-.1,vz1,0,.9) vert[1] = AddVertex(gsur,vx1,TerrainY(ter,vx1+sx*64,0,vz1+sz*64)+Rnd(3,5.5),vz1,0,0) vert[2] = AddVertex(gsur,vx2,TerrainY(ter,vx2+sx*64,0,vz2+sz*64)-.1,vz2,.9,.9) vert[3] = AddVertex(gsur,vx2,TerrainY(ter,vx2+sx*64,0,vz2+sz*64)+Rnd(3,5.5),vz2,.9,0) AddTriangle(gsur,vert[0],vert[1],vert[2]) AddTriangle(gsur,vert[1],vert[2],vert[3]) r = Rand(75,85) g = Rand(195,230) b = Rand(75,85) VertexColor gsur,vert[0],r,g,b VertexColor gsur,vert[1],r,g,b VertexColor gsur,vert[2],r,g,b VertexColor gsur,vert[3],r,g,b Next Next grass(sx,sz) = gmesh Next Next Return gpiv End Function ; Updatet das Gras während des Ausführens Function UpdateGrass(ter) If lod = 0 Then ; Ist das LOD deaktiviert, so werden alle Grasmeshs einfach so angezeigt For x = 0 To 9 For z = 0 To 9 ShowEntity grass(x,z) PositionEntity grass(x,z),x*64,TerrainY(ter,x,0,z),z*64 Next Next Else ; Ist das LOD aktiviert, so werden weiter entfernte Grasmeshs versteckt, davor tiefer gezeichnet For x = 0 To 9 For z = 0 To 9 dist# = Sqr((EntityX(cam,0)-x*64)^2+(EntityZ(cam,0)-z*64)^2) If dist<= 250 ShowEntity grass(x,z) PositionEntity grass(x,z),x*64,TerrainY(ter,x,0,z)-dist/60+.5,z*64 Else HideEntity grass(x,z) EndIf Next Next EndIf End Function Function Util_Fps() fps_frames=fps_frames+1 If MilliSecs()-fps_ms >= 1000 Then fps_anzeige=fps_frames fps_frames=0 fps_ms=MilliSecs() EndIf Return fps_anzeige End Function Dein Gras sieht übrigens gut aus, auch wenn ich nur mit meinen eigenen Grafiken getestet habe ![]() @skey-z: da war ich wohl schneller, siehe oben ![]() mfg robotx |
||
www.botbomb.robotzgames.de
www.robotzgames.de |
![]() |
Schranz0r |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mal abgesehen davon, das der Code von mir geklaut ist.
machs so: Code: [AUSKLAPPEN] Graphics 1024,768,16,2
kanal = PlayMusic("start.mp3") SetBuffer BackBuffer() HidePointer Maus = LoadImage("maus.bmp") Global Wahl = 0 Repeat Cls bildvariable = LoadImage("1.bmp") DrawBlock bildvariable, 110, 80 MaskImage bildvariable, r, g, b Mx=MouseX() My=MouseY() If RectsOverlap(Mx,My,1,1,680,600,100,20) Then Wahl = 1 Text 420,384,"Gleich gehts los!" Button(680,600,100,20,"Start",58,58,58,255,255,255,0,1) If RectsOverlap(Mx,My,1,1,780,600,100,20) Then Wahl = 2 Text 384,384,"Wollen Sie Mara wirklich schon beenden?" Button(780,600,100,20,"Beenden",58,58,58,255,255,255,0,2) ;------------------Maus Zeichen----------------------------------- Color 0,0,0 Rect Mx,My,1,1,1 DrawImage Maus,Mx,My ;----------------------------------------------------------------- Color 255,255,255 Text 20,20,"Wahl : "+ Wahl Flip Until KeyHit(1) Function Button(Bx,By,weite,hoehe,Txt$,Rot,Gruen,Blau,Rot2,Gruen2,Blau2,Defaultnummer, Wahln) If Wahl = wahln Then Color Rot,Gruen,Blau Rect Bx,By,weite,hoehe,1 Color 120,120,120 Line Bx,By,Bx+weite,By Line Bx,By+1,Bx+weite,By+1 Line Bx+1,By+hoehe,Bx+1,By Line Bx,By+hoehe,Bx,By Color 255,255,255 Line Bx,By+hoehe,Bx+weite,By+hoehe Line Bx,By+hoehe-1,Bx+weite,By+hoehe-1 Line Bx+weite,By,Bx+weite,By+hoehe Line Bx+weite-1,By+2,Bx+weite-1,By+hoehe-2 Else Color Rot,Gruen,Blau Rect Bx,By,weite,hoehe,1 Color 255,255,255 Line Bx,By,Bx+weite,By Line Bx,By+1,Bx+weite,By+1 Line Bx+1,By+hoehe,Bx+1,By Line Bx,By+hoehe,Bx,By Color 120,120,120 Line Bx,By+hoehe,Bx+weite,By+hoehe Line Bx,By+hoehe-1,Bx+weite,By+hoehe-1 Line Bx+weite,By,Bx+weite,By+hoehe Line Bx+weite-1,By+2,Bx+weite-1,By+hoehe-2 EndIf If Not RectsOverlap(Mx,My,1,1,Bx,By,weite,hoehe) Then Wahl = 0 Color Rot2,Gruen2,Blau2 Text Bx+(weite/2),By+(hoehe/2),Txt$,1,1 End Function |
||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!HAUPTSACH et kost VIEL!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group