4K - oGL-Digitaluhr

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Unsere Datenschutzerklärung wurde aktualisiert. Mit der Nutzung unseres Forums akzeptierst Du unsere Datenschutzerklärung. Du bestätigst zudem, dass Du mindestens 16 Jahre alt bist.

    • 4K - oGL-Digitaluhr

      Hallo.
      Ich habe hier eine OpenGL-Uhr.
      Das "Design" basiert auf einem mechanischen Zählwerk, bei dessen Anblick mir die Idee kam. Um diese Uhr zu verwirklichen habe ich mich nach einer Programmiersprache, die auf einfache Weise 3D- Objekte darstellen kann, umgesehen. Dabei bin ich auf XProfan gestoßen. Ich habe vor Jahren schon mit der 16 Bit Version kleine Windows- Anwendungen geschrieben. Also habe ich mir die Freeware von XProfan11 runtergeladen und einfach drauf los geschrieben.
      Die erste Version der Uhr war natürlich viel größer als 4kB und ich hatte auch noch 4 Bitmaps für die Texturen. Nachdem ich von diesem Wettbewerb gelesen habe, habe ich das Programm gestrafft und erzeuge die Texturen jetzt zur Laufzeit(der Hintergrund gefiel mir vorher besser:|).

      Beendet wird die Uhr mit der rechten Maustaste.

      Ich hoffe sie gefällt Euch
      fG Donald

      [Blockierte Grafik: http://s22.postimg.org/6kmb1xyp9/Uhr_Bunt.jpg]

      Quellcode

      1. ' 4k-Wettbewerb 2013 @Donnie71
      2. Proc GLScene
      3. oGL("Init", %hWnd, 0.0, 0.0, 0, 1)
      4. oGL("PosMode", 1)
      5. oGL("BlendMode", 1)
      6. textur% = oGL("GetTextureBMP",bild&, 2)
      7. texturb% = oGL("GetTextureBMP", dskBMP&, 3)
      8. 'Hintergrund und Ringe erstellen
      9. box# = new(oglSprite)
      10. Ringe(box#, "TUBE", 0,0,-65, 1,1,1, texturb%, 40,40,40,360)
      11. with box#
      12. .rotx! = 0
      13. .rotz! = 0
      14. .rotdy! = 36
      15. .dtick& = 1000
      16. .alpha! = 0.6
      17. endwith
      18. zy0# = new(oglSprite)
      19. Ringe(zy0#, "CYLINDER", 0,0,0, 0.5,0.5,0.5, 0, 2.2,2.2,6,24)
      20. zy0#.alpha! = 0.7
      21. zy1# = new(oglSprite)
      22. Ringe(zy1#, "TUBE", 2.4,0,0, 1,1,1, textur%, 2.4,2.4,0.6,24)
      23. zy2# = new(oglSprite)
      24. Ringe(zy2#, "TUBE", 1.7,0,0, 1,1,1, textur%, 2.4,2.4,0.6,24)
      25. zy3# = new(oglSprite)
      26. Ringe(zy3#, "TUBE", 0.35,0,0, 1,1,1, textur%, 2.4,2.4,0.6,24)
      27. zy4# = new(oglSprite)
      28. Ringe(zy4#, "TUBE", -0.35,0,0, 1,1,1, textur%, 2.4,2.4,0.6,24)
      29. zy5# = new(oglSprite)
      30. Ringe(zy5#, "TUBE", -1.7,0,0, 1,1,1, textur%, 2.4,2.4,0.6,24)
      31. zy6# = new(oglSprite)
      32. Ringe(zy6#, "TUBE", -2.4,0,0, 1,1,1, textur%, 2.4,2.4,0.6,24)
      33. ende% = 0
      34. EndProc
      35. 'Ringe(Bereich, Type, PosX,PosY,PosZ, ColorR,ColorG,ColorB, Textur, X,Y,Z,B)
      36. proc Ringe
      37. Parameters nAme#, tYpe$, pX!,pY!,pZ!, cR!,cG!,cB!, tExtur%, xX!, yY!, zZ!, bB!
      38. with nAme#
      39. .typ$ = tYpe$
      40. .posx! = pX!
      41. .posy! = pY!
      42. .posz! = pZ!
      43. .colorr! = cR!
      44. .colorg! = cG!
      45. .colorb! = cB!
      46. .rotx! = 197
      47. .rotz! = 90
      48. .alpha! = 0.7
      49. .textur& = tExtur%
      50. .x! = xX!
      51. .y! = yY!
      52. .z! = zZ!
      53. .b! = bB!
      54. endwith
      55. endproc
      56. proc DrawGLScene
      57. oGL("Clear")
      58. oGL("Origin",0,0,-5.1)
      59. oGL("Color",0,1,0,0.9)
      60. oGL("Quad",5.8,1.4)
      61. oGL("Origin", 0, 0, -7)
      62. oGL("Draw", box#)
      63. oGL("Draw", zy1#)
      64. oGL("Draw", zy2#)
      65. oGL("Draw", zy3#)
      66. oGL("Draw", zy4#)
      67. oGL("Draw", zy5#)
      68. oGL("Draw", zy6#)
      69. oGL("Draw", zy0#)
      70. proc Scheibe
      71. oGL("Color", 0, 1, 0.0, 0.8)
      72. oGL("Disk", 0, 0.1, 12)
      73. endproc
      74. oGL("Origin", -1 , -0.2, -4.5)
      75. Scheibe
      76. oGL("Origin", -1 , 0.2, -4.5)
      77. Scheibe
      78. oGL("Origin", 1 , -0.2, -4.5)
      79. Scheibe
      80. oGL("Origin", 1 , 0.2, -4.5)
      81. Scheibe
      82. oGL("Show")
      83. endproc
      84. declare ende%, zy0#, zy1#, zy2#, zy3#, zy4#, zy5#, zy6#, box#, textur%, texturb%, x!
      85. declare Zeit$, Sek$, St$, Min$, s0!, s1!, m0!, m1!, h0!, h1!, xE!,yE!,wE!,hE!
      86. 'Textur für HintergrundZylinder erstellen
      87. var dskBMP& = Create("hNewPic",40,40,Rgb(255,255,255))
      88. Randomize
      89. StartPaint dskBMP&
      90. WhileLoop 20
      91. xE! = Rnd(40)
      92. yE! = Rnd(40)
      93. wE! = xE! + 40
      94. hE! = yE! + 40
      95. UsePen 0,5,Rgb(rnd(255),rnd(255), rnd(255))
      96. UseBrush 1,Rgb(rnd(255),rnd(255), rnd(255))
      97. Ellipse xE!,yE! - wE!,wE!
      98. EndWhile
      99. EndPaint
      100. 'Textur für Ringe erstellen
      101. var bild& = Create("hNewPic", 500, 50, 31)
      102. StartPaint bild&
      103. TextColor @RGB(0,255,0),-1
      104. set("Orientation", -900)
      105. UseFont "Arial", 50, 40,0,0,0
      106. whileLoop 0,10
      107. Drawtext x!,1, &loop-1
      108. x! = x! + 50
      109. EndWhile
      110. EndPaint
      111. windowTitle "Uhr"
      112. windowStyle 512 + 16 + 64
      113. window %MaxX - 350, 10 - 170, 110
      114. UseIcon "A"
      115. GLScene
      116. setTimer 100
      117. 'Hauptschleife
      118. WhileNot ende%
      119. WaitInput
      120. SELECT %MouseKey
      121. CASEOF 1
      122. UseCursor 5
      123. SendMessage(%hwnd,$112,$F012,0)
      124. UseCursor 0
      125. CASEOF 2
      126. Case MessageBox("Soll die Uhr beendet werden?","Uhr Beenden?",33) = 1 : ende% = 1
      127. ENDSELECT
      128. Sek$ = Left$(Time$(1),2)
      129. s0! = Val(Left$(Sek$,1))*36+197
      130. s1! = Val(Right$(Sek$,1))*36+197
      131. zy1#.rotx! = s1!
      132. zy2#.rotx! = s0!
      133. Zeit$ = Time$(0)
      134. St$ = Left$(Zeit$,2)
      135. Min$ = Right$(Zeit$,2)
      136. m0! = Val(Left$(Min$,1))*36+197
      137. m1! = Val(Right$(Min$,1))*36+197
      138. s0! = Val(Left$(St$,1))*36+197
      139. s1! = Val(Right$(St$,1))*36+197
      140. zy3#.rotx! = m1!
      141. zy4#.rotx! = m0!
      142. zy5#.rotx! = s1!
      143. zy6#.rotx! = s0!
      144. DrawGLScene()
      145. EndWhile
      146. DeleteObject textur%
      147. DeleteObject texturb%
      148. oGL("Done")
      149. killTimer
      150. end
      Alles anzeigen
    • Naja, was das gefallen betrifft, meine Analoguhr hat inzwischen auch einen "Großen Bruder", der mir besser gefällt. Sowas können wir ja mal vorstellen, wenn das Ergebnis des Wettbewerbs vorliegt.
      Auf jeden Fall hast Du eine prima Uhr hingekriegt :top:. Wenn die noch beweglich wird, ist das super.

      Gruß Volkmar
    • Ich freu mich, dass Euch meine Uhr soweit gefällt. Deshalb kommt hier auf vielfachen Wunsch ;-) der neue Code, der die Uhr beweglich macht.
      Einfach irgendwo mit der linken Maustaste auf das Fenster klicken und Ziehen.
      Gruß Donald

      Quellcode

      1. ' 4k-Wettbewerb 2013 @Donnie71
      2. Proc GLScene
      3. oGL("Init", %hWnd, 0, 0, 0, 0)
      4. oGL("PosMode", 1)
      5. oGL("BlendMode", 1)
      6. textur% = oGL("GetTextureBMP",bild&, 2)
      7. texturb% = oGL("GetTextureBMP", dskBMP&, 2)
      8. 'Hintergrund und Ringe erstellen
      9. box# = new(oglSprite)
      10. Ringe(box#, "TUBE", 0,0,0, 1,1,1, texturb%, 30,30,40,360)
      11. box#.rotx! = 0
      12. box#.rotz! = 0
      13. box#.rotdy! = 6
      14. box#.dtick& = 1000
      15. zy0# = new(oglSprite)
      16. Ringe(zy0#, "CYLINDER", 0,0,0, 0.5,0.5,0.5, 0, 1.95,1.95,6,24)
      17. zy0#.alpha! = 0.6
      18. zy1# = new(oglSprite)
      19. Ringe(zy1#, "TUBE", 2.5,0,0, 1,1,1, textur%, 2,2,0.5,24)
      20. zy2# = new(oglSprite)
      21. Ringe(zy2#, "TUBE", 1.8,0,0, 1,1,1, textur%, 2,2,0.5,24)
      22. zy3# = new(oglSprite)
      23. Ringe(zy3#, "TUBE", 0.35,0,0, 1,1,1, textur%, 2,2,0.5,24)
      24. zy4# = new(oglSprite)
      25. Ringe(zy4#, "TUBE", -0.35,0,0, 1,1,1, textur%, 2,2,0.5,24)
      26. zy5# = new(oglSprite)
      27. Ringe(zy5#, "TUBE", -1.8,0,0, 1,1,1, textur%, 2,2,0.5,24)
      28. zy6# = new(oglSprite)
      29. Ringe(zy6#, "TUBE", -2.5,0,0, 1,1,1, textur%, 2,2,0.5,24)
      30. ende% = 0
      31. EndProc
      32. proc DrawGLScene
      33. oGL("Clear")
      34. oGL("Origin", 0, 0, -7)
      35. oGL("Draw", box#)
      36. oGL("Draw", zy1#)
      37. oGL("Draw", zy2#)
      38. oGL("Draw", zy3#)
      39. oGL("Draw", zy4#)
      40. oGL("Draw", zy5#)
      41. oGL("Draw", zy6#)
      42. oGL("Draw", zy0#)
      43. proc Scheibe
      44. oGL("Color", 0, 1, 0.0, 0.8)
      45. oGL("Disk", 0, 0.1, 12)
      46. endproc
      47. oGL("Origin", -1 , -0.2, -5.0)
      48. Scheibe
      49. oGL("Origin", -1 , 0.2, -5.0)
      50. Scheibe
      51. oGL("Origin", 1 , -0.2, -5.0)
      52. Scheibe
      53. oGL("Origin", 1 , 0.2, -5.0)
      54. Scheibe
      55. oGL("Show")
      56. endproc
      57. 'Ringe(Bereich, Type, PosX,PosY,PosZ, ColorR,ColorG,ColorB, Textur, X,Y,Z,B)
      58. proc Ringe
      59. Parameters nAme#, tYpe$, pX!,pY!,pZ!, cR!,cG!,cB!, tExtur%, xX!, yY!, zZ!, bB!
      60. with nAme#
      61. .typ$ = tYpe$
      62. .posx! = pX!
      63. .posy! = pY!
      64. .posz! = pZ!
      65. .colorr! = cR!
      66. .colorg! = cG!
      67. .colorb! = cB!
      68. .rotx! = 197
      69. .rotz! = 90
      70. .alpha! = 0.6
      71. .textur& = tExtur%
      72. .x! = xX!
      73. .y! = yY!
      74. .z! = zZ!
      75. .b! = bB!
      76. endwith
      77. endproc
      78. declare ende%, zy0#, zy1#, zy2#, zy3#, zy4#, zy5#, zy6#, box#, textur%, texturb%, x!
      79. declare Zeit$, Sek$, St$, Min$, s0!, s1!, m0!, m1!, h0!, h1!
      80. 'Textur für HintergrundZylinder erstellen
      81. var dskBMP& = Create("hPic", 0, "&DSKBMP")
      82. 'Textur für Ringe erstellen
      83. var bild& = Create("hNewPic", 500, 50, 31)
      84. StartPaint bild&
      85. TextColor @RGB(0,255,0),-1
      86. set("Orientation", -900)
      87. UseFont "Arial", 50, 40,0,0,0
      88. whileLoop 0,10
      89. Drawtext x!,1, &loop-1
      90. x! = x! + 50
      91. EndWhile
      92. EndPaint
      93. windowTitle "Uhr"
      94. windowStyle 80
      95. window %MaxX - 350, 10 - 170, 120
      96. UseIcon "A"
      97. GLScene
      98. setTimer 100
      99. 'Hauptschleife
      100. WhileNot ende%
      101. WaitInput
      102. SELECT %MouseKey
      103. CASEOF 1
      104. UseCursor 5
      105. SendMessage(%hwnd,$112,$F012,0)
      106. UseCursor 0
      107. CASEOF 2
      108. Case MessageBox("Soll die Uhr beebdet werden?","Uhr Beenden?",33) = 1 : ende% = 1
      109. ENDSELECT
      110. Sek$ = Left$(Time$(1),2)
      111. s0! = Val(Left$(Sek$,1))*36+197
      112. s1! = Val(Right$(Sek$,1))*36+197
      113. zy1#.rotx! = s1!
      114. zy2#.rotx! = s0!
      115. Zeit$ = Time$(0)
      116. St$ = Left$(Zeit$,2)
      117. Min$ = Right$(Zeit$,2)
      118. m0! = Val(Left$(Min$,1))*36+197
      119. m1! = Val(Right$(Min$,1))*36+197
      120. s0! = Val(Left$(St$,1))*36+197
      121. s1! = Val(Right$(St$,1))*36+197
      122. zy3#.rotx! = m1!
      123. zy4#.rotx! = m0!
      124. zy5#.rotx! = s1!
      125. zy6#.rotx! = s0!
      126. DrawGLScene()
      127. EndWhile
      128. DeleteObject textur%
      129. DeleteObject texturb%
      130. oGL("Done")
      131. killTimer
      132. end
      Alles anzeigen
    • Hi Donald, hab dein nettes Ührchen mal 'ne Weile auf meinen Desktop laufen lassen. Da ist mir bei längerer Betrachtung in den Sinn gekommen, das es vllt. noch plastischer wirken würde, wenn du die Farbhelligkeit der Ziffern über & unter der aktuellen Ziffer einen ticken (wirklich bloß minimal) verringern könntest.
      Das hätte dann die Wirkung, als ob die Ziffern aus dem "Schatten" ins Licht kommen, weil es ja vorne am hellsten ist, & dann wieder in den Schatten wandern (also nach unten).
      Hab allerdings noch nicht mit ogl experimentiert & hab deshalb auch keine Vorstellung über den Aufwand im Rahmen der 4k, der dafür nötig wäre...
      Schöne Uhr - benutz ich gerne;)

      edit: grad gesehen: im Beenden-Dialog steckt ein kleiner Tippfehler
      Gruß Jörg

      Ideen gibt es viele - man muß sie nur haben...
      Win7-Pro / Linux Mint
    • Danke Jörg.
      Den Tippfehler hatte ich noch gar nicht bemerkt :oops:
      Was den Schatten angeht: Das ist eine gute Idee. Ich probier gleich mal was aus. Mal sehen was sich da machen lässt. Ich hab ja noch ein paar Kommentarzeilen im Code, die ich notfalls streichen kann.

      Donald
    • Mit dem Schatten hat es nicht so gut geklappt. Ich habe verschiedene Wege ausprobiert. Aber Nichts hat das gewünschte Ergebnis gebracht.
      Ich habe jetzt einen Mittelweg gefunden, der mich persönlich zu Frieden stellt.
      Der Hintergrund ist nun etwas dunkel und unscharf, dafür sind die aktuellen Zahlen "beleuchtet".

      [Blockierte Grafik: http://s21.postimage.org/og5kpcv2b/Uhr_Gr_n.jpg]

      Ich finde so kann man die Zeit besser ablesen, und es wirkt räumlicher.

      Der neue Code:

      Quellcode

      1. ' 4k-Wettbewerb 2013 @Donnie71
      2. Proc GLScene
      3. oGL("Init", %hWnd, 0.7, 1, 0.7, 1)
      4. oGL("PosMode", 1)
      5. oGL("BlendMode", 1)
      6. textur% = oGL("GetTextureBMP",bild&, 2)
      7. texturb% = oGL("GetTextureBMP", dskBMP&, 2)
      8. 'Hintergrund und Ringe erstellen
      9. box# = new(oglSprite)
      10. Ringe(box#, "TUBE", 0,0,0, 1,1,1, texturb%, 8,8,40,360)
      11. box#.rotx! = 0
      12. box#.rotz! = 0
      13. box#.rotdy! = 6
      14. box#.dtick& = 1000
      15. box#.alpha! = 0.7
      16. zy0# = new(oglSprite)
      17. Ringe(zy0#, "CYLINDER", 0,0,0, 0.5,0.5,0.5, 0, 1.8,1.8,6,24)
      18. zy0#.alpha! = 0.8
      19. zy1# = new(oglSprite)
      20. Ringe(zy1#, "TUBE", 2.5,0,0, 1,1,1, textur%, 2,2,0.5,24)
      21. zy2# = new(oglSprite)
      22. Ringe(zy2#, "TUBE", 1.8,0,0, 1,1,1, textur%, 2,2,0.5,24)
      23. zy3# = new(oglSprite)
      24. Ringe(zy3#, "TUBE", 0.35,0,0, 1,1,1, textur%, 2,2,0.5,24)
      25. zy4# = new(oglSprite)
      26. Ringe(zy4#, "TUBE", -0.35,0,0, 1,1,1, textur%, 2,2,0.5,24)
      27. zy5# = new(oglSprite)
      28. Ringe(zy5#, "TUBE", -1.8,0,0, 1,1,1, textur%, 2,2,0.5,24)
      29. zy6# = new(oglSprite)
      30. Ringe(zy6#, "TUBE", -2.5,0,0, 1,1,1, textur%, 2,2,0.5,24)
      31. ende% = 0
      32. EndProc
      33. proc DrawGLScene
      34. oGL("Clear")
      35. oGL("Origin",0,0,-7)
      36. oGL("Color",0,1,0,0.6)
      37. oGL("Quad",7.8,1.6)
      38. oGL("Origin", 0, 0, -7)
      39. oGL("Draw", box#)
      40. oGL("Draw", zy1#)
      41. oGL("Draw", zy2#)
      42. oGL("Draw", zy3#)
      43. oGL("Draw", zy4#)
      44. oGL("Draw", zy5#)
      45. oGL("Draw", zy6#)
      46. oGL("Draw", zy0#)
      47. proc Scheibe
      48. oGL("Color", 0, 1, 0.0, 0.8)
      49. oGL("Disk", 0, 0.1, 12)
      50. endproc
      51. oGL("Origin", -1 , -0.2, -4.9)
      52. Scheibe
      53. oGL("Origin", -1 , 0.2, -4.9)
      54. Scheibe
      55. oGL("Origin", 1 , -0.2, -4.9)
      56. Scheibe
      57. oGL("Origin", 1 , 0.2, -4.9)
      58. Scheibe
      59. oGL("Show")
      60. endproc
      61. 'Ringe(Bereich, Type, PosX,PosY,PosZ, ColorR,ColorG,ColorB, Textur, X,Y,Z,B)
      62. proc Ringe
      63. Parameters nAme#, tYpe$, pX!,pY!,pZ!, cR!,cG!,cB!, tExtur%, xX!, yY!, zZ!, bB!
      64. with nAme#
      65. .typ$ = tYpe$
      66. .posx! = pX!
      67. .posy! = pY!
      68. .posz! = pZ!
      69. .colorr! = cR!
      70. .colorg! = cG!
      71. .colorb! = cB!
      72. .rotx! = 197
      73. .rotz! = 90
      74. .alpha! = 0.7
      75. .textur& = tExtur%
      76. .x! = xX!
      77. .y! = yY!
      78. .z! = zZ!
      79. .b! = bB!
      80. endwith
      81. endproc
      82. declare ende%, zy0#, zy1#, zy2#, zy3#, zy4#, zy5#, zy6#, box#, textur%, texturb%, x!
      83. declare Zeit$, Sek$, St$, Min$, s0!, s1!, m0!, m1!, h0!, h1!
      84. 'Textur für HintergrundZylinder erstellen
      85. var dskBMP& = Create("hPic", 0, "&DSKBMP")
      86. 'Textur für Ringe erstellen
      87. var bild& = Create("hNewPic", 500, 50, 31)
      88. StartPaint bild&
      89. TextColor @RGB(0,255,0),-1
      90. set("Orientation", -900)
      91. UseFont "Arial", 50, 40,0,0,0
      92. whileLoop 0,10
      93. Drawtext x!,1, &loop-1
      94. x! = x! + 50
      95. EndWhile
      96. EndPaint
      97. windowTitle "Uhr"
      98. windowStyle 80
      99. window %MaxX - 350, 10 - 170, 120
      100. UseIcon "A"
      101. GLScene
      102. setTimer 100
      103. 'Hauptschleife
      104. WhileNot ende%
      105. WaitInput
      106. SELECT %MouseKey
      107. CASEOF 1
      108. UseCursor 5
      109. SendMessage(%hwnd,$112,$F012,0)
      110. UseCursor 0
      111. CASEOF 2
      112. Case MessageBox("Soll die Uhr beendet werden?","Uhr Beenden?",33) = 1 : ende% = 1
      113. ENDSELECT
      114. Sek$ = Left$(Time$(1),2)
      115. s0! = Val(Left$(Sek$,1))*36+197
      116. s1! = Val(Right$(Sek$,1))*36+197
      117. zy1#.rotx! = s1!
      118. zy2#.rotx! = s0!
      119. Zeit$ = Time$(0)
      120. St$ = Left$(Zeit$,2)
      121. Min$ = Right$(Zeit$,2)
      122. m0! = Val(Left$(Min$,1))*36+197
      123. m1! = Val(Right$(Min$,1))*36+197
      124. s0! = Val(Left$(St$,1))*36+197
      125. s1! = Val(Right$(St$,1))*36+197
      126. zy3#.rotx! = m1!
      127. zy4#.rotx! = m0!
      128. zy5#.rotx! = s1!
      129. zy6#.rotx! = s0!
      130. DrawGLScene()
      131. EndWhile
      132. DeleteObject textur%
      133. DeleteObject texturb%
      134. oGL("Done")
      135. killTimer
      136. end
      Alles anzeigen
    • Nochmal schnell kurz vor Schluss ein Update. :cool:
      Mich hat der graue Hintergrund genervt, deshalb ist er jetzt bunt. Außerdem ist die "Walze" etwas größer geworden, damit die Zeit auch noch aus einiger Entfernung gut ablesbar ist. (Das Fenster ist aber nicht größer!)
      Ich hoffe es gefällt Euch.

      [Blockierte Grafik: http://s22.postimg.org/6kmb1xyp9/Uhr_Bunt.jpg]

      Quellcode

      1. ' 4k-Wettbewerb 2013 @Donnie71
      2. Proc GLScene
      3. oGL("Init", %hWnd, 0.0, 0.0, 0, 1)
      4. oGL("PosMode", 1)
      5. oGL("BlendMode", 1)
      6. textur% = oGL("GetTextureBMP",bild&, 2)
      7. texturb% = oGL("GetTextureBMP", dskBMP&, 3)
      8. 'Hintergrund und Ringe erstellen
      9. box# = new(oglSprite)
      10. Ringe(box#, "TUBE", 0,0,-65, 1,1,1, texturb%, 40,40,40,360)
      11. with box#
      12. .rotx! = 0
      13. .rotz! = 0
      14. .rotdy! = 36
      15. .dtick& = 1000
      16. .alpha! = 0.6
      17. endwith
      18. zy0# = new(oglSprite)
      19. Ringe(zy0#, "CYLINDER", 0,0,0, 0.5,0.5,0.5, 0, 2.2,2.2,6,24)
      20. zy0#.alpha! = 0.7
      21. zy1# = new(oglSprite)
      22. Ringe(zy1#, "TUBE", 2.4,0,0, 1,1,1, textur%, 2.4,2.4,0.6,24)
      23. zy2# = new(oglSprite)
      24. Ringe(zy2#, "TUBE", 1.7,0,0, 1,1,1, textur%, 2.4,2.4,0.6,24)
      25. zy3# = new(oglSprite)
      26. Ringe(zy3#, "TUBE", 0.35,0,0, 1,1,1, textur%, 2.4,2.4,0.6,24)
      27. zy4# = new(oglSprite)
      28. Ringe(zy4#, "TUBE", -0.35,0,0, 1,1,1, textur%, 2.4,2.4,0.6,24)
      29. zy5# = new(oglSprite)
      30. Ringe(zy5#, "TUBE", -1.7,0,0, 1,1,1, textur%, 2.4,2.4,0.6,24)
      31. zy6# = new(oglSprite)
      32. Ringe(zy6#, "TUBE", -2.4,0,0, 1,1,1, textur%, 2.4,2.4,0.6,24)
      33. ende% = 0
      34. EndProc
      35. 'Ringe(Bereich, Type, PosX,PosY,PosZ, ColorR,ColorG,ColorB, Textur, X,Y,Z,B)
      36. proc Ringe
      37. Parameters nAme#, tYpe$, pX!,pY!,pZ!, cR!,cG!,cB!, tExtur%, xX!, yY!, zZ!, bB!
      38. with nAme#
      39. .typ$ = tYpe$
      40. .posx! = pX!
      41. .posy! = pY!
      42. .posz! = pZ!
      43. .colorr! = cR!
      44. .colorg! = cG!
      45. .colorb! = cB!
      46. .rotx! = 197
      47. .rotz! = 90
      48. .alpha! = 0.7
      49. .textur& = tExtur%
      50. .x! = xX!
      51. .y! = yY!
      52. .z! = zZ!
      53. .b! = bB!
      54. endwith
      55. endproc
      56. proc DrawGLScene
      57. oGL("Clear")
      58. oGL("Origin",0,0,-5.1)
      59. oGL("Color",0,1,0,0.9)
      60. oGL("Quad",5.8,1.4)
      61. oGL("Origin", 0, 0, -7)
      62. oGL("Draw", box#)
      63. oGL("Draw", zy1#)
      64. oGL("Draw", zy2#)
      65. oGL("Draw", zy3#)
      66. oGL("Draw", zy4#)
      67. oGL("Draw", zy5#)
      68. oGL("Draw", zy6#)
      69. oGL("Draw", zy0#)
      70. proc Scheibe
      71. oGL("Color", 0, 1, 0.0, 0.8)
      72. oGL("Disk", 0, 0.1, 12)
      73. endproc
      74. oGL("Origin", -1 , -0.2, -4.5)
      75. Scheibe
      76. oGL("Origin", -1 , 0.2, -4.5)
      77. Scheibe
      78. oGL("Origin", 1 , -0.2, -4.5)
      79. Scheibe
      80. oGL("Origin", 1 , 0.2, -4.5)
      81. Scheibe
      82. oGL("Show")
      83. endproc
      84. declare ende%, zy0#, zy1#, zy2#, zy3#, zy4#, zy5#, zy6#, box#, textur%, texturb%, x!
      85. declare Zeit$, Sek$, St$, Min$, s0!, s1!, m0!, m1!, h0!, h1!, xE!,yE!,wE!,hE!
      86. 'Textur für HintergrundZylinder erstellen
      87. var dskBMP& = Create("hNewPic",40,40,Rgb(255,255,255))
      88. Randomize
      89. StartPaint dskBMP&
      90. WhileLoop 20
      91. xE! = Rnd(40)
      92. yE! = Rnd(40)
      93. wE! = xE! + 40
      94. hE! = yE! + 40
      95. UsePen 0,5,Rgb(rnd(255),rnd(255), rnd(255))
      96. UseBrush 1,Rgb(rnd(255),rnd(255), rnd(255))
      97. Ellipse xE!,yE! - wE!,wE!
      98. EndWhile
      99. EndPaint
      100. 'Textur für Ringe erstellen
      101. var bild& = Create("hNewPic", 500, 50, 31)
      102. StartPaint bild&
      103. TextColor @RGB(0,255,0),-1
      104. set("Orientation", -900)
      105. UseFont "Arial", 50, 40,0,0,0
      106. whileLoop 0,10
      107. Drawtext x!,1, &loop-1
      108. x! = x! + 50
      109. EndWhile
      110. EndPaint
      111. windowTitle "Uhr"
      112. windowStyle 512 + 16 + 64
      113. window %MaxX - 350, 10 - 170, 110
      114. UseIcon "A"
      115. GLScene
      116. setTimer 100
      117. 'Hauptschleife
      118. WhileNot ende%
      119. WaitInput
      120. SELECT %MouseKey
      121. CASEOF 1
      122. UseCursor 5
      123. SendMessage(%hwnd,$112,$F012,0)
      124. UseCursor 0
      125. CASEOF 2
      126. Case MessageBox("Soll die Uhr beendet werden?","Uhr Beenden?",33) = 1 : ende% = 1
      127. ENDSELECT
      128. Sek$ = Left$(Time$(1),2)
      129. s0! = Val(Left$(Sek$,1))*36+197
      130. s1! = Val(Right$(Sek$,1))*36+197
      131. zy1#.rotx! = s1!
      132. zy2#.rotx! = s0!
      133. Zeit$ = Time$(0)
      134. St$ = Left$(Zeit$,2)
      135. Min$ = Right$(Zeit$,2)
      136. m0! = Val(Left$(Min$,1))*36+197
      137. m1! = Val(Right$(Min$,1))*36+197
      138. s0! = Val(Left$(St$,1))*36+197
      139. s1! = Val(Right$(St$,1))*36+197
      140. zy3#.rotx! = m1!
      141. zy4#.rotx! = m0!
      142. zy5#.rotx! = s1!
      143. zy6#.rotx! = s0!
      144. DrawGLScene()
      145. EndWhile
      146. DeleteObject textur%
      147. DeleteObject texturb%
      148. oGL("Done")
      149. killTimer
      150. end
      Alles anzeigen
    • Ändere Zeile 121 von

      Drawtext x!,1, &loop-1

      nach

      Drawtext x!,1, str$(&loop-1)

      Jetzt sollte es klappen.

      DRAWTEXT erwartet einen String als 3. Parameter!

      Gruß
      Roland
      (Intel Duo E8400 3,0 GHz / 4 GB RAM / 250 GB HDD / ATI Radeon HD4770 512 MB / Windows Vista - ausgemustert zum Verkauf)
      AMD Athlon II X2 2,9 GHz / 8 GB RAM / 500 + 1000 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X4


      http://www.xprofan.de
    • Ich hätte da noch eine Frage :
      Mit der Windows-Taste + . bekommt man ja die von Windows 10
      eingebauten Smileys. Wenn man auf eines klickt, sind die
      auch für einen Moment in einem Literal sichtbar. Sobald das
      Kästchen aber verschwindet, wird mit Fragezeichen ersetzt.

      Sind halt UTF8 - Zeichen. Wie könnte ich die in meinem
      Programm, z.B. als String nutzen, bzw. als Bildchen anzeigen ?
    • Da der XProfan-Editor kein UTF8 direkt unterstützt und Interpreter und Compiler auch kein UTF8-Code verarbeiten, könnten solche Zeichen nur mit chr$(nnnnn) in Widestrings eingebaut werden.

      Gruß
      Roland
      (Intel Duo E8400 3,0 GHz / 4 GB RAM / 250 GB HDD / ATI Radeon HD4770 512 MB / Windows Vista - ausgemustert zum Verkauf)
      AMD Athlon II X2 2,9 GHz / 8 GB RAM / 500 + 1000 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X4


      http://www.xprofan.de