vll hintergrund für credits

Spiele, Demos, Grafikzeug und anderes unterhaltendes.
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

vll hintergrund für credits

Beitrag von zigapeda »

Hi

habe bzw. wollte gerade was proggn und dann ist das rausgekommen:

Code: Alles auswählen

InitSprite()
InitKeyboard()
Dim sternp(1000,1)
Dim sternm(1000,1)
OpenScreen(1024,768,16,"sterne")

For a = 0 To 1000
  For b = 0 To 1
    sternm(a, b) = Random(20) - 10
  Next b
  sternp(a, 0) = 512
  sternp(a, 1) = 384
Next a

Repeat
ExamineKeyboard()
ClearScreen(0,0,0)
For a = 0 To 1000
  If sternp(a, 0) < 0 Or sternp(a, 0) > 1024 Or sternp(a, 1) < 0 Or sternp(a, 1) > 768
    sternp(a, 0) = 512
    sternp(a, 1) = 384
  EndIf
  StartDrawing(ScreenOutput())
    Plot(sternp(a, 0), sternp(a, 1), RGB(255,255,255))
  StopDrawing()
  sternp(a, 0) = sternp(a, 0) + sternm(a, 0)
  sternp(a, 1) = sternp(a, 1) + sternm(a, 1)
Next a
FlipBuffers()
Until KeyboardPushed(#pb_key_escape)
Hätte eigentlich was anderes werden sollen aber das sieht auch lustig aus.
Wenn man es eine kurze zeit laufen lässt kommt ein fehler weiß einer warum?
Eigentlich ist es unsinn aber man könnte es als hintergrund für z.B. Credits bei einem Spiel hernehmen. es ist immer anderst.
Noch eine frage zum speicher, braucht das viel? Ich weiß die arrays sind ziemlich groß aber es werden ja nur zahlen zwischen 0 und maximal 1024 dargestellt. Ich kenn mich nicht so aus und deshalb frage ich wie hoch der speicherverbrauch ungefähr ist also zu hoch oder geht es schon noch?
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Benutzeravatar
Hroudtwolf
Beiträge: 1416
Registriert: 30.10.2004 23:33
Kontaktdaten:

Beitrag von Hroudtwolf »

Da war ein Fehler drin.
Das hatten wir doch heut schon mal :?

Code: Alles auswählen

InitSprite()
InitKeyboard()
Dim sternp(1000,1)
Dim sternm(1000,1)
OpenScreen(1024,768,16,"sterne")

For a = 0 To 1000
  For b = 0 To 1
    sternm(a, b) = Random(20) - 10
  Next b
  sternp(a, 0) = 512
  sternp(a, 1) = 384
Next a

Repeat
ExamineKeyboard()
ClearScreen(0,0,0)
For a = 0 To 1000
  If sternp(a, 0) < 0 Or sternp(a, 0) > 1024 Or sternp(a, 1) < 0 Or sternp(a, 1) > 768
    sternp(a, 0) = 512
    sternp(a, 1) = 384
  EndIf
  StartDrawing(ScreenOutput())
;Geänderter Bereich
;---------------------------------------------------------------------------------------
    If sternp(a,0)>0 And sternp(a,0)<1024 And sternp(a,1)<767 and sternp(a,1)>0 
      Plot(sternp(a, 0), sternp(a, 1), RGB(255,255,255))
    EndIf 
;---------------------------------------------------------------------------------------    
    
  StopDrawing()
  sternp(a, 0) = sternp(a, 0) + sternm(a, 0)
  sternp(a, 1) = sternp(a, 1) + sternm(a, 1)
Next a
FlipBuffers()
Until KeyboardPushed(#pb_key_escape)
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Ein Fehler raus, zwei neue rein ;)

EDIT: Ne, is doch schwachsin, dafür soll ja die Abfrage davor sein, die is buggy...

Code: Alles auswählen

InitSprite()
InitKeyboard()
Dim sternp(1000,1)
Dim sternm(1000,1)
OpenScreen(1024,768,16,"sterne")

For a = 0 To 1000
  For b = 0 To 1
    sternm(a, b) = Random(20) - 10
  Next b
  sternp(a, 0) = 512
  sternp(a, 1) = 384
Next a

Repeat
ExamineKeyboard()
ClearScreen(0,0,0)
For a = 0 To 1000
  If sternp(a, 0) < 0 Or sternp(a, 0) >= 1024 Or sternp(a, 1) < 0 Or sternp(a, 1) >= 768
    sternp(a, 0) = 512
    sternp(a, 1) = 384
  EndIf
  StartDrawing(ScreenOutput())
    Plot(sternp(a, 0), sternp(a, 1), RGB(255,255,255))
  StopDrawing()
  sternp(a, 0) = sternp(a, 0) + sternm(a, 0)
  sternp(a, 1) = sternp(a, 1) + sternm(a, 1)
Next a
FlipBuffers()
Until KeyboardPushed(#pb_key_escape)
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
Hroudtwolf
Beiträge: 1416
Registriert: 30.10.2004 23:33
Kontaktdaten:

Beitrag von Hroudtwolf »

Da ist nix Schwachsinn.
Können wir jetzt nicht mehr kopieren ? /:->
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

Hab es nochmal ein bischen überarbeitet:

Code: Alles auswählen

InitSprite()
InitKeyboard()
Dim sternp(1000,1)
Dim sternm(1000,1)
OpenScreen(1024,768,16,"sterne")

For a = 0 To 1000
  For b = 0 To 1
    sternm(a, b) = Random(20) - 10
  Next b
  sternp(a, 0) = 512
  sternp(a, 1) = 384
Next a

Repeat
ExamineKeyboard()
ClearScreen(0,0,0)
For a = 0 To 999
  If sternp(a, 0) < 0 Or sternp(a, 0) > 1024 Or sternp(a, 1) < 0 Or sternp(a, 1) > 768
    sternp(a, 0) = 512 : sternp(a, 1) = 384
    sternm(a,0) = Random(20) - 10
    If sternm(a,0) = 0
      sternm(a,0) = sternm(a,0) + Random(3)
    EndIf
    sternm(a,1) = Random(20) - 10
    If sternm(a,1) = 0
      sternm(a,1) = sternm(a,1) + Random(3)
    EndIf
    If sternm(a,1) = sternm(a,0)
      sternm(a,1) = sternm(a,1) + Random(3)
    EndIf
  EndIf
  StartDrawing(ScreenOutput())
    Plot(sternp(a, 0), sternp(a, 1), RGB(255,255,255))
  StopDrawing()
  sternp(a, 0) = sternp(a, 0) + sternm(a, 0)*2
  sternp(a, 1) = sternp(a, 1) + sternm(a, 1)*2
Next a
StartDrawing(ScreenOutput())
  Plot(0,0,RGB(0,0,0))
StopDrawing()
FlipBuffers()
Until KeyboardPushed(#pb_key_escape)
Jetzt hab ich das erreicht was ich eigentlich erreichen wollte aber der fehler kommt immer noch nach einer bestimmten zeit.
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag von Andre »

zigapeda hat geschrieben:Jetzt hab ich das erreicht was ich eigentlich erreichen wollte aber der fehler kommt immer noch nach einer bestimmten zeit.
Ja, weil Du wieder nicht beachtet hast, was Hroudtwolf schon gezeigt hat:
Du "plottest" einfach wild drauf los und damit auch außerhalb des sichtbaren Bildschirms. Dadurch die Fehlermeldung...

Entscheidend aus Hroudtwolf's Code ist folgender Abschnitt:

Code: Alles auswählen

  If sternp(a, 0) < 0 Or sternp(a, 0) >= 1024 Or sternp(a, 1) < 0 Or sternp(a, 1) >= 768 
    sternp(a, 0) = 512 
    sternp(a, 1) = 384 
  EndIf 
Damit werden die Sterne bei Erreichen des Bildschirmrandes auf einen Ursprungswert ínnerhalb des Bildschirms zurückgesetzt.
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

achso ich bin durcheinander gekommen aber Hroudtwolf hat eine zweite überprüfung eingebaut.
Ich hab den fehler gemacht das ich bei 0 anfange und deshalb der bildschirm nur 1023 lang und 767 hoch ist.
Das von Hroudtwolf geschrieben hat hab ich mir schon angeschaut aber ich hab es nicht eingebaut weil ich ja schon eine überprüfung hab.
Also dann danke
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Benutzeravatar
Lebostein
Beiträge: 674
Registriert: 13.09.2004 11:31
Wohnort: Erzgebirge

Beitrag von Lebostein »

Es ist immer wieder schade, wie die Leute mit dem geschwindigkeitsvernichtenden Befehl StartDrawing() umgehen. In deinem Code wird bei jedem Schleifendurchlauf 1000(!) mal StartDrawing() und StopDrawing() aufgerufen. Warum nicht nur einmal?

Code: Alles auswählen

InitSprite()
InitKeyboard()
Dim sternp(1000,1)
Dim sternm(1000,1)
OpenScreen(1024,768,16,"sterne")

For a = 0 To 1000
  For b = 0 To 1
    sternm(a, b) = Random(20) - 10
  Next b
  sternp(a, 0) = 512
  sternp(a, 1) = 384
Next a

Repeat
ExamineKeyboard()
ClearScreen(0,0,0)

StartDrawing(ScreenOutput())

For a = 0 To 999
  If sternp(a, 0) < 0 Or sternp(a, 0) >= 1024 Or sternp(a, 1) < 0 Or sternp(a, 1) >= 768
    sternp(a, 0) = 512 : sternp(a, 1) = 384
    sternm(a,0) = Random(20) - 10
    If sternm(a,0) = 0
      sternm(a,0) = sternm(a,0) + Random(3)
    EndIf
    sternm(a,1) = Random(20) - 10
    If sternm(a,1) = 0
      sternm(a,1) = sternm(a,1) + Random(3)
    EndIf
    If sternm(a,1) = sternm(a,0)
      sternm(a,1) = sternm(a,1) + Random(3)
    EndIf
  EndIf
  Plot(sternp(a, 0), sternp(a, 1), RGB(255,255,255))
  sternp(a, 0) = sternp(a, 0) + sternm(a, 0)*2
  sternp(a, 1) = sternp(a, 1) + sternm(a, 1)*2
Next a
Plot(0,0,RGB(0,0,0))

StopDrawing()

FlipBuffers()
Until KeyboardPushed(#pb_key_escape)
Jetzt ist es wahnsinnig schnell und man hat noch genug Ressourcen, um anderen Code hinzuzufügen (als Hintergrundaktivität ist es so besser geeignet). Damit es wieder schöner aussieht, kann man ja jetzt ein Bremse einbauen, abhängig von der Rechnergeschwindigkeit...

Am besten und übersichtlichsten ist es aber immer noch, wenn man zunächst alle Berechnungen ausführt, d.h. die neuen Koordinaten berechnet und in einem zweiten Teil der Hauptschleife die ganzen Ausgaben macht. Der Code oben ist ja so ne Art Mischung aus Berechnung und gleichzeitiger Ausgabe....
Zuletzt geändert von Lebostein am 07.06.2005 10:05, insgesamt 1-mal geändert.
THEEX
Beiträge: 804
Registriert: 07.09.2004 03:13

Beitrag von THEEX »

@Lebostein

Dann hattest aber auch grad die Plotdarstellung ausserhalb des Darstellbereichs korrigieren können.
Benutzeravatar
Lebostein
Beiträge: 674
Registriert: 13.09.2004 11:31
Wohnort: Erzgebirge

Beitrag von Lebostein »

CSprengel hat geschrieben:@Lebostein

Dann hattest aber auch grad die Plotdarstellung ausserhalb des Darstellbereichs korrigieren können.
Habs noch geändert... :)
Antworten