WiP - Work in Progress - Part XII
Übersicht

Gehe zu Seite Zurück 1, 2, 3, 4 ... 18, 19, 20 Weiter
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich denke, d-Bug wird nicht auf Kellogs-Niveau sinken.
Ich mag Kellogs. ^__^ @SpionAtom: Spassig, habe bei mir keine Grossen Bugs entdeckt, bis auf das skalierbare Fenster ganz toll. ![]() |
||
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ihr habt es so gewollt: 2 neue Level. Und das beste ist. Level kann jeder machen, der mit Rect, Oval usw. umgehen kann. Have fun.
Code: [AUSKLAPPEN] ;Mouse on the road
;von SpionAtom - begonnen Januar 2oo8 Graphics 800, 600, 16, 3 SetBuffer BackBuffer() Const finalLevel = 7 ;Anzahl der Level .startgame Global mouse_x, mouse_y Global level = 1, startoff = 0, timeSpent = 0 ende = 0 Repeat old_mouse_x = mouse_x old_mouse_y = mouse_y mouse_x = MouseX() mouse_y = MouseY() Cls drawLevel level If startoff = 1 Then ;Prüfen, ob zwischen aktueller und letzter Mausposition ein roter Punkt ist... LockBuffer BackBuffer() x1 = old_mouse_x: y1 = old_mouse_y: x2 = mouse_x: y2 = mouse_y d# = Distanz(x1, y1, x2, y2): w# = Winkel(x1, y1, x2, y2) px = x1: py = y1 For i = 0 To d px = x1 - Sin(w) * i py = y1 - Cos(w) * i rgb = ReadPixelFast(px, py) f = getColorCode(rgb) If f = 3 Then ende = 1: Exit Next ;Farbe an der aktuellen Mausposition überprüfen rgb = ReadPixelFast(mouse_x, mouse_y) UnlockBuffer BackBuffer() f = getColorCode(rgb) If f = 3 Then ende = 1 If f = 2 Then level = level + 1 startoff = 0 End If End If If startoff = 1 Then ts$ = Str((MilliSecs() - timeSpent) / 1000) + " seconds" Else ts$ = "Click GO to begin this round" Color 55, 155, 255 Center ts$, 10 Flip() Until KeyDown(1) Or ende = 1 Or level = finalLevel + 1 Repeat Cls Color 255, 255, 255 Center "Game Over", 0 If level <= finalLevel Then Center "Reached Level: " + level, 30 Else Center "Victory", 30 If MouseY() >= 60 And MouseY() <= 76 Then Color 255, 155, 55 If MouseDown(1) Then Goto startgame End If Center "Again", 60 Color 255, 255, 255 If MouseY() >= 90 And MouseY() <= 106 Then Color 255, 155, 55 If MouseDown(1) Then End End If Center "End", 90 Flip() Until KeyDown(1) End Function Center(txt$, y) Text (GraphicsWidth() - StringWidth(txt$)) / 2, y, txt$ End Function Function Winkel#(x1#,y1#,x2#,y2#) Return (360+ATan2(x1#-x2#,y1#-y2#)) Mod 360 End Function Function Distanz#(x1#, y1#, x2#, y2#) Return Sqr((x1-x2)^2 + (y1-y2)^2) End Function Function drawLevel(l) Select l Case 1 startx = 60 starty = 60 startr = 30 Color 200, 55, 0 Oval 250, -300, 50, 600, 1 Oval 500, 300, 50, 600, 1 Color 255, 255, 0 Oval 620, 420, 160, 160, 1 Case 2 startx = 50 starty = 50 startr = 30 Color 200, 55, 0 For i = 1 To 5 Rect v*100, i * 100, 700, 10, 1 v = 1 -v Next Color 255, 255, 0 Oval 20, 520, 60, 60 Case 3 startx = 400 starty = 300 startr = 30 Color 255, 255, 0 Rect 0, 0, 800, 600 Color 0, 0, 0 Oval 150, 50, 500, 500 Color 200, 55, 0 Oval 200, 100, 400, 400 Color 0, 0, 0 Oval 220, 120, 360, 360 For i = 0 To 3 w = MilliSecs() / 50 xx = 400 - Sin(i * 90 + w) * 190 yy = 300 - Cos(i * 90 + w) * 190 Oval xx - 30, yy - 30, 60, 60 Next Case 4 startx = 25 starty = 25 startr = 20 Color 200, 55, 0 For i = 0 To 4 Rect i * 50, (i + 1) * 50, 750 - i * 100, 2 Rect 750 - i * 50, (i + 1) * 50, 2, 500 - i * 100 Rect i * 50 + 50, 550 - i * 50, 700 - i * 100 + 2, 2 Rect i * 50 + 50, (i + 2) * 50, 2, 450 - i * 100 Next Color 255, 255, 0 w = MilliSecs() Rect 375 + Sin(w) * 50, 300, 50, 20 Case 5 startx = 400 starty = 300 startr = 30 Color 255, 255, 0 Rect 0, 0, 800, 600 Color 0, 0, 0 Oval 150, 50, 500, 500 Color 200, 55, 0 Oval 200, 100, 400, 400 Color 0, 0, 0 Oval 220, 120, 360, 360 Color 200, 55, 0 Oval 250, 150, 300, 300 Color 0, 0, 0 Oval 270, 170, 260, 260 For i = 0 To 3 w = MilliSecs() / 20 xx = 400 - Sin(i * 90 + w * 2) * 190 yy = 300 - Cos(i * 90 + w * 2) * 190 Oval xx - 30, yy - 30, 60, 60 xx = 400 - Sin(i * 90 + w + 45) * 140 yy = 300 - Cos(i * 90 + w + 45) * 140 Oval xx - 30, yy - 30, 60, 60 Next Case 6 startx = 30 starty = 300 startr = 20 Color 200, 55, 0 Rect 0, 0, 800, 600 Color 0, 0, 0 Oval -100, 200, 200, 200 Oval 700, 200, 200, 200 Color 0, 0, 0 w = (MilliSecs() / 10) Mod 250 For i = 0 To 3 Oval i * 250 + w, 260, 80, 80 Next Color 255, 255, 0 Oval 750, 250, 100, 100 Case 7 startx = 30 starty = 300 startr = 20 Color 200, 55, 0 Rect 0, 0, 800, 600 Color 0, 0, 0 Oval -100, 200, 200, 200 Oval 700, 200, 200, 200 Color 0, 0, 0 w = (MilliSecs() / 10) Mod 250 For i = 0 To 3 Oval i * 250 + w, 260 + Sin(i * 250 + w) * 50, 80, 80 Next Color 255, 255, 0 Oval 750, 250, 100, 100 End Select If startoff = 0 Then Color 155, 155, 0 Oval startx - startr, starty - startr, 2 * startr, 2 * startr, 1 Color 0, 0, 0 Text startx - 10, starty - 8, "GO" End If ;Color 200, 55, 0 ;Rect 0, 0, 800, 600, 0 If MouseHit(1) Then d = Distanz(startx, starty, mouse_x, mouse_y) If d <= startr Then startoff = 1 timeSpent = MilliSecs() End If FlushMouse() End If End Function Function getColorCode(rgb) rw = (rgb And $FF0000) / $10000 gw = (rgb And $FF00) / $100 bw = (rgb And $FF) If rw = 155 And gw = 155 And bw = 0 Then Return 1 ;start If rw = 255 And gw = 255 And bw = 0 Then Return 2 ;ziel If rw = 200 And gw = 55 And bw = 0 Then Return 3 ;verlieren Return 0 End Function |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
Mr Hopp |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@SpionAtom: Lol sehr geniale Idee ![]() ![]() |
||
Zitat:
Wie poste ich falsch? Nachdem ich Google, die FAQ's und die Boardsuche erfolgreich ignoriert habe, erstelle ich zwei bis fünf neue Themen, in den falschen Unterforen, mit kreativen Titeln und undeutlichem Text, unter dem sich jeder etwas anderes vorstellen kann. |
blitzblaster |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@ D-Bug: Das J & R sieht bis jetzt echt gut aus. Sehr liebevoll gemacht. Schön weitermachen! | ||
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Mr Hopp: Die "geniale" Idee ist ja nicht von mir. ![]() ![]() Zu bewundern sind nun 11 Level im Codearchiv. |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
![]() |
DerKeks |
![]() Antworten mit Zitat ![]() |
---|---|---|
So jetzt will ich auch mal was zum WiP beitragen...
Hier kommt meine GUI, an der ich schon seit längerem arbeite. Da jedoch in der älteren Version das Parent-System nicht funktionieren wollte, hab ich heute Mittag neu angefangen, diesmal mit mehreren Grafiken und mit Farbverläufen. Eigentlich sollten die Verläufe ohne Grafiken auskommen, aber irgendwie kam nicht vernünftiges bei herum, als ich die Verläufe von Blitz generieren lassen wollte. Bisherige Features: +++ Windows +++ Buttons +++ FPS-Anzeiege ![]() Da ich die GUI inmeinem nächsten Spiel verwenden will, werden jetzt erst einmal Gadgets kommen, die in einem Spiel wichtig sind. Fragt mich jetzt nicht welche das sein werden - Ich hab noch keinen Plan xD Hier erstmal ein Bild meiner GUI: so Far... DerKeks |
||
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
Entweder hast du den schwächsten Computer aller Zeiten oder du machst irgendwas falsch, wenn du 42 fps bei zwei Fenstern mit ein paar Buttons hast. | ||
MrKeks.net |
![]() |
theotheoderich |
![]() Antworten mit Zitat ![]() |
---|---|---|
...er macht es in der Hinsicht falsch, dass er die Farbverläufe in der GUI von Blitz berechnen lässt.
Vermutlich werden die Farbverläufe bei jeden Schleifendurchgang neu berechnet/erstellt. Ich würde zu Programmstart den Farbverlauf in einen eigenen Screenbuffer erstellen, diesen Buffer dann in einer Grafikvariablen speichern. Der erstellte Farbverlauf darf dann aber nicht breiter als ein Pixel sein, damit man die Fenster später schön skalieren kann. Ist das Fenster also dann 120 Pixel breit, muss die ein Pixel breite Grafik vom Verlauf halt 120x nebeneinander gezeichnet werden. Ist dass geschehen, wird das Fenster in einen eigenen Screenbuffer geschrieben und dieser Buffer wieder in eine Bildvariable gespeichert. Nun wird nur noch dieses eben erstellte Bild des Fensters gezeichnet. So hast Du selbst bei 100 Fenstern nur 100 Zeichenvorgänge (Bilder) auf dem Bildschirm. Funktioniert natürlich nur, solange sich die Grösse des Fensters nicht ändert, bzw. der Bildschirminhalt nicht ändert (wobei man den Inhalt eines Fensters auch in einer eigenen Bildvariablen speichern kann). Das Fenster bekommt dann eine Variable mit "window\aktualisierung = False", und sobald sich z. B. die Grösse des Fensters ändert wird "window\aktualisierung = True" und die Titelleiste des Fensters wird mit allen ein Pixel breiten Farbverlaufsgrafiken neu berechnet, und es wird wieder alles neu gespeichert. Ich hoffe, Du konntest mir etwas folgen... ![]() Fakt ist, mit dieser Methode hier brauchst Du den Farbverlauf nur einmal berechnen und später dann immer nur die Breite des Fensters anpassen. Wenn Du also mit der Methode dann alle Fenster gezeichnet hast, und nichts veränderst, solltest Du eigentlich bei einer handvoll Fenster fast die gesamte Rechenkapazität frei haben. |
||
Gruß
TheoTheoderich -- The box label said, "Requires Windows XP or better.", so I bought an Amiga Computer. |
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmm, was mir gerade an meiner Gui auffällt.
Ich mache es genau so wie du es sagst Theotheoderich, nur habe ich mit folgendem code 40 fps, und ohne ihn 300+ Code: [AUSKLAPPEN] ;Leiste zeichnen
For xx=0 To w\x_size DrawImage Leiste_Blue,w\x+xx,w\y Next Das bild ist exakt 1 Pixel breit und 22 Pixel hoch, oder so. Nur zieht das höllisch an der FPS Könnt ihr mir sagen warum? mfg marius [Edit]Achso LOL, habs kapiert, ich machs ja gerade falsch^^. Werd ich sofort ändern[/Edit] |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
![]() |
theotheoderich |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dein Code ist im Prinzip richtig, nur darf er nur einmal ausgeführt werden, wenn ein Fenster aktualisiert bzw. in der Grösse geändert wird....und nicht 60 mal pro Sekunde ![]() Dann den "Fensterkopf" als mittels Buffer als Bild speichern und bis zur nächsten Grössenänderung nur das Bild anzeigen. Problematisch ist es, wenn man ein scalierbares Fenster hat und Spaß am Grössenändern hat. Die "Fenster hat sich geändert"-Funktion muss dann ständig aufgerufen werden....zieht viel Rechenzeit... ...das ist im übrigen der Grund, warum in früheren Windows-Versionen ein Fenster beim Verschieben und beim Grösseändern nicht angezeigt wurde, sondern nur ein Rahmen *lol* @mas93 Ändere mal Deine Signatur ![]() |
||
Gruß
TheoTheoderich -- The box label said, "Requires Windows XP or better.", so I bought an Amiga Computer. |
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ahh ja genau, so werd ichs machen.
@Theo: Jaa, ich weiss. Habs immer noch nicht verkraftet^^ Ich hätte das ganze gerne fortgesetzt... mfg marius |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Devilgui geht da einen anderen Weg, indem es zwar jedes Fenster pro Schleifendurchlauf zeichnet (und somit auch den RAM schont), dies jedoch mit Viewport und TileImage relativ Ressourcensparend hinbiegt.
So hat man mit 3 Fenstern trotzdem noch einige hundert FPS. |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Warum erstellt ihr für eure komischen Leisten nicht einfach ein großes Bild (meinetwegen 200 Pixel breit), und zeichnet das dann mit DrawImageRect() ein? ![]() |
||
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans! Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver |
![]() |
theotheoderich |
![]() Antworten mit Zitat ![]() |
---|---|---|
Weil die Fenster skalierbar sein sollen.
Ein 200 pixel breites Bild reicht da nicht, manchmal kann es ja auch nur 100 Pixel breit sein, manchmal aber auch 400 Pixel. |
||
Gruß
TheoTheoderich -- The box label said, "Requires Windows XP or better.", so I bought an Amiga Computer. |
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wo ist das Problem? Genau dafür ist DrawImageRect() doch gut.
Und wenn es auch breiter als das Bild sein soll, kann man es zum Beispiel wie folgt machen: Code: [AUSKLAPPEN] For i = 0 To breite / 200
If breite > i * 200 DrawImage image, x + i * 200, y Else DrawImageRect image, x + i * 200, y, 0, 0, breite - i * 200, 10 EndIf Next Geht vielleicht noch einfacher/schneller, aber so geht es auf alle Fälle auch. EDIT: Habe es selbst noch schneller hinbekommen: Code: [AUSKLAPPEN] For i = 0 To (breite / 200 - 1)
DrawImage image, x + i * 200, y Next DrawImageRect image, x + i * 200, y, 0, 0, breite - i * 200, 10 |
||
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans! Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver |
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Soo, dann stell ich euch auch mal noch mein aktuelles Projekt vor:
GameGUI Wie der name schon verrät, soll es ein Gui extra auf die bedürfnisse von Spieleprogrammieren angepasst werden. Bisher habe ich folgende features eingebaut: -Fenster können erstellt + verschoben werden -Buttons können erstellt werden -Buttons werden Fenstern zugeordnet und können abgefragt werden -Slider können erstellt, Fenstern zugeordnet und abgefragt werden -Die Slider Skala kann eingestellt werden, So kann man z.b ein Lautstärke Slider machen(0-100%) oder z.b ein Slider um die Maximalen leben einzustelltn(0-6) -Inputboxen können erstellt und abgefragt werden -Inputboxen verwenden auf wunsch irgend eines Users hier im Forum Bitmap fonts(Bin ich auch ganz stolz drauf^^) -Eigene Styles können erstellt werden in denen z.b Die Rahmenfarbe und Hintergrundfarbe und die Button images usw. festgelegt werden. Ich bin wie immer für Ideen und anregungen offen. Hier noch ein screen: mfg mas93 |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
![]() |
Apprauuuu |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hoffe ihr seid nicht böse, wenn ich hier nen Screen von einem nur ehemaligen BB-Spiel reinstelle.
Es sollte dazu ja nen großes Update rauskommen, jedoch wurde das Spiel in C# neugeschrieben (natürlich mit den neuen Inhalten...) Sollte ich ca. einer Woche fertig sein. Hier noch nen Screen aus dem Menü: ![]() Und hier das neue Interface: ![]() |
||
Arbeitsstand:
Umprogrammierung von LOL³Warriors und LOL³Fighters in Bmax... LOL³Fighters wird spielerisch noch mal ordentlich aufpoliert, um es Ligatauglich zu machen (zumindest für private Funligen von mir ^^) |
![]() |
coolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
errinert mich ein bisschen an star trade, vom Grafik Stil her. Schaut gut aus. | ||
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project! "Eigenzitate sind nur was für Deppen" -Eigenzitat |
be59 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@mas91
Nochne GUI. In der Textbox Die schrift Wie heist die ? |
||
![]() |
mas93 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Be irgendwas: Danke für deinen konstruktiven Beitrag zu meinem GUI.(Ich hoffe ihr erkennt den Sarkasmus xD)
Der Font heisst standart.png und ist in der Draw3d lib zu finden. Ich hab ihn lediglich etwas angepasst. mfg mas93 |
||
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau] |
Gehe zu Seite Zurück 1, 2, 3, 4 ... 18, 19, 20 Weiter
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group