WiP - Work in Progress - Part XII

Übersicht Sonstiges Projekte

Gehe zu Seite Zurück  1, 2, 3, 4 ... 18, 19, 20  Weiter

Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.

The_Nici

BeitragSo, Jan 20, 2008 21:35
Antworten mit Zitat
Benutzer-Profile anzeigen
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. Very Happy

SpionAtom

BeitragSo, Jan 20, 2008 21:49
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Jan 20, 2008 22:42
Antworten mit Zitat
Benutzer-Profile anzeigen
@SpionAtom: Lol sehr geniale Idee Very Happy Im Code fehlt zwar die OOP und du hast scheinbar ein Goto verwendet (hab nur die Sprungmarke in Erinnerung), aber davon weiß ja der durchschnittsuser später nix x Laughing Sehr simples, aber lustiges Spiel
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

BeitragMo, Jan 21, 2008 14:32
Antworten mit Zitat
Benutzer-Profile anzeigen
@ D-Bug: Das J & R sieht bis jetzt echt gut aus. Sehr liebevoll gemacht. Schön weitermachen!

SpionAtom

BeitragMo, Jan 21, 2008 16:53
Antworten mit Zitat
Benutzer-Profile anzeigen
@Mr Hopp: Die "geniale" Idee ist ja nicht von mir. Smile Ich frage mich nur, was du an Objekten und Orientierung erwartest bei so einem kleinen Spiel. Confused Und tatsächlich ist 1 Goto drin. Und das ist meiner Meinung nach auch eine gute Methode, um ein Programm von vorne beginnen zu lassen.

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

BeitragDi, Jan 22, 2008 22:11
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Very Happy

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:

user posted image

so Far... DerKeks

Mr.Keks

BeitragMi, Jan 23, 2008 12:45
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Jan 23, 2008 13:34
Antworten mit Zitat
Benutzer-Profile anzeigen
...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... Very Happy
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

BeitragMi, Jan 23, 2008 13:47
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Jan 23, 2008 13:56
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Wink
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 Wink
Gruß
TheoTheoderich
--
The box label said, "Requires Windows XP or better.", so I bought an Amiga Computer.

mas93

BeitragMi, Jan 23, 2008 14:03
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Jan 23, 2008 14:03
Antworten mit Zitat
Benutzer-Profile anzeigen
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

aMul

Sieger des Minimalist Compo 01/13

BeitragMi, Jan 23, 2008 15:26
Antworten mit Zitat
Benutzer-Profile anzeigen
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? Confused Dann könnt ihr die Fenster auch ohne Probleme jeden Frame neu zeichnen...
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

BeitragMi, Jan 23, 2008 15:48
Antworten mit Zitat
Benutzer-Profile anzeigen
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.

aMul

Sieger des Minimalist Compo 01/13

BeitragDo, Jan 24, 2008 18:25
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Jan 24, 2008 21:01
Antworten mit Zitat
Benutzer-Profile anzeigen
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:user posted image


mfg
mas93
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]

Apprauuuu

BeitragFr, Jan 25, 2008 19:14
Antworten mit Zitat
Benutzer-Profile anzeigen
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ü:

user posted image

Und hier das neue Interface:
user posted image
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

BeitragFr, Jan 25, 2008 19:44
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Jan 25, 2008 20:01
Antworten mit Zitat
Benutzer-Profile anzeigen
@mas91

Nochne GUI.
In der Textbox
Die schrift
Wie heist die ?

mas93

BeitragFr, Jan 25, 2008 21:04
Antworten mit Zitat
Benutzer-Profile anzeigen
@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

Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.


Übersicht Sonstiges Projekte

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group