Problem mit Delay gelöst

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Thunder

Betreff: Problem mit Delay gelöst

BeitragDi, Okt 30, 2007 15:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich brauche Delay bei meinem Programm. Das Problem ist allerdings das die Wartezeit "Delay 1" zu kurz ist.
Danke, im Vorraus
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit
  • Zuletzt bearbeitet von Thunder am Do, Nov 08, 2007 19:21, insgesamt einmal bearbeitet
 

phil217

BeitragDi, Okt 30, 2007 15:23
Antworten mit Zitat
Benutzer-Profile anzeigen
dann nimm doch ne größere Zahl
die Zahl hinter delay bestimmt die Anzahl der Millisekunden die gewartet wird
wofür brauchst dus denn?
MfG
Phil

BladeRunner

Moderator

BeitragDi, Okt 30, 2007 15:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich brauche Geld auf meinem Konto. Das Problem ist allerdings dass 1 Euro zuwenig ist.


















So fucking what ?
Wenn Du eine Frage hast: Stell sie. Aber das hier ist hanebüchen.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Abrexxes

BeitragDi, Okt 30, 2007 16:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab da mal was vorbereitet:

Code: [AUSKLAPPEN]

Delay 2


Dieser Code ist Freeware und darf manipuliert, kopiert und erweitert werden.
 

neolein

BeitragDi, Okt 30, 2007 16:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Thunder,

Delay 1000 = 1000ms = 1sec
Es gibt in der Tat Basic Dialekte, bei denen 1 = 1sec bedeutet

Aber: Robs und Motus Kurse lesen, gehört zu den Basics

Thunder

BeitragMi, Okt 31, 2007 14:22
Antworten mit Zitat
Benutzer-Profile anzeigen
[b]Tut mir leid ich habe meine Frage falsch formuliert.[/b] Mir ist die Wartezeit Delay 1 zu lang und ohne Delay zu kurz.
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit
 

Dreamora

BeitragMi, Okt 31, 2007 14:28
Antworten mit Zitat
Benutzer-Profile anzeigen
dazwischen gibt es nichts.

1ms wartezeit ist das kürzest mögliche.
inwiefern 1 millisekunde zu lange sein soll ist mir schleierhaft überdies.
das gibt bei 60 FPS immer noch 15.6666 ms für anderes (inkl rendern) also sehr viel zeit
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Abrexxes

BeitragMi, Okt 31, 2007 14:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Wieder das übliche NoobTimer gebastel mit Delay.

Thunder

BeitragMi, Okt 31, 2007 15:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich kann ja mal meinen Programmtext reinkopieren:

Code: [AUSKLAPPEN]

Graphics 800,600
For i= 0 To 200000
Color 255,0,0
Plot Rand(800),Rand(200)
Color 255,255,255
Plot Rand(800),Rand(200,400)
Color 255,0,0
Plot Rand(800),Rand(400,600)
Next

Cls

For i= 0 To 200000
Color 255,0,0
Plot Rand(800),Rand(200)
Color 255,255,255
Plot Rand(800),Rand(200,400)
Color 0,255,0
Plot Rand(800),Rand(400,600)
Next

Cls

For i= 0 To 200000
Color 255,0,0
Plot Rand(800),Rand(200)
Color 255,255,0
Plot Rand(800),Rand(200,400)
Color 255,0,0
Plot Rand(800),Rand(400,600)
Next
End


Das ist eine Testversion mit 3 Flaggen. Die Vollversion hat ca. 15 und für mich ist Delay 1 eindeutig zu lang. Trotzdem Danke für die schnelle Antwort.
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit
 

Dreamora

BeitragMi, Okt 31, 2007 15:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Den joke meinst du unter garantie nicht ernst oder.
Das ich zumindest sehr.

Denn:

1. Du hast mehrere CLS in einer Hauptschleife und nutzt kein DoubleBuffering -> grundlegender Fehler
2. Du versuchst in jeder For Schleife 600'000 Pixel zu zeichnen. Da würde dir auch Delay 0 nimmer helfen, denn das wird in Echtzeit nie funktionieren.
3. Zeigt dein Code nicht einmal wofür du Delay brauchst.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Thunder

BeitragMi, Nov 07, 2007 18:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Dreamora hat Folgendes geschrieben:
Den joke meinst du unter garantie nicht ernst oder.
Das ich zumindest sehr.

Denn:

1. Du hast mehrere CLS in einer Hauptschleife und nutzt kein DoubleBuffering -> grundlegender Fehler
2. Du versuchst in jeder For Schleife 600'000 Pixel zu zeichnen. Da würde dir auch Delay 0 nimmer helfen, denn das wird in Echtzeit nie funktionieren.
3. Zeigt dein Code nicht einmal wofür du Delay brauchst.



Das ich kein Double-buffering nutze ist, weil das Programm dann zu langsam läuft. Und ich möchte Delay einsetzen um das Zeichnen dieser 600000 Pixel zu verlangsamen(double-buffering=zu langsam).
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit
 

Dreamora

BeitragMi, Nov 07, 2007 18:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenns langsam ist hast du nicht verstanden wie man es macht.

Dazu lies am besten in der Hilfe Mal bei:

LockBuffer
UnlockBuffer
WritePixelFast
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

ozzi789

BeitragMi, Nov 07, 2007 18:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Delay 0.5 Very Happy
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
 

Dreamora

BeitragMi, Nov 07, 2007 18:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du keine Ahnung hast, poste bitte nicht, danke
Die Dokumentation sagt glaub selbst anfängerverständlich, dass dort ein Integer erwartet wird, kein Float!
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Nov 07, 2007 18:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn es nun kein super-duper-Projekt sein soll, so würde ich es wie folgt machen:

Code: [AUSKLAPPEN]
Graphics 800,600,0,1
SetBuffer FrontBuffer()

ClsColor 32,32,40:Cls
Delay 1000


For w=1 To 200
   LockBuffer FrontBuffer()
      For q=0 To w*w
         WritePixelFast Rand(24,775),Rand( 24,207),0
         WritePixelFast Rand(24,775),Rand(208,391),15601937
         WritePixelFast Rand(24,775),Rand(392,575),14540049
      Next
   UnlockBuffer FrontBuffer()
   Delay 50
Next

Print "habe fertig"
WaitKey
End


Wenn es aber 'gut' programmiert werden soll, so würde ich mir Gedanken darüber machen, wie ich den Rechner dazu bringen kann, nicht Pixelweise per Zufall zu setzen, sondern so, dass jeder Pixel an einer bestimmten Position auch nur einmal gesetzt wird.

edit1: Kleine Korrektur am Code vorgenommen.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
  • Zuletzt bearbeitet von hectic am Mi, Nov 07, 2007 19:01, insgesamt 3-mal bearbeitet

ozzi789

BeitragMi, Nov 07, 2007 18:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Kommt nicht mehr vor...

War ein witzchen Confused
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Nov 07, 2007 19:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Problematisch wird allerdings dann, wenn du auch Diagonale oder Sterne und andere Symbole darstellen willst. Von daher kannst du auch gleich ein Image laden und ein wenig mit DrawBlockRect rumspielen. Das ganze dann Tilesbasierend natürlich.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

HyDr0x

BeitragMi, Nov 07, 2007 20:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Du könntest das Bild aber auch vorher einlesen lassen und die Koordinaten wo es zu Farbänderungen kommt in einem Dimfeld abspeichern. Dann kannst du vorher eine abfrage machen welche Farbe für diese Koordinate genommen werden muss.

EDIT: Nach etwas überlegen bin ich zu dem Entschluss gekommen das ich genau das wiederholt habe was Hectic vorschlug Wink

EDIT für unteren Post
Jop stand etwas neben der Spur, allerdings ist dein Post auch nur OffTopic von daher .... Razz
  • Zuletzt bearbeitet von HyDr0x am Mi, Nov 07, 2007 20:52, insgesamt einmal bearbeitet

Xeres

Moderator

BeitragMi, Nov 07, 2007 20:47
Antworten mit Zitat
Benutzer-Profile anzeigen
-Argh-
Erst denken, dann Posten >.>
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Thunder

BeitragDo, Nov 08, 2007 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
hectic hat Folgendes geschrieben:
Wenn es nun kein super-duper-Projekt sein soll, so würde ich es wie folgt machen:

Code: [AUSKLAPPEN]
Graphics 800,600,0,1
SetBuffer FrontBuffer()

ClsColor 32,32,40:Cls
Delay 1000


For w=1 To 200
   LockBuffer FrontBuffer()
      For q=0 To w*w
         WritePixelFast Rand(24,775),Rand( 24,207),0
         WritePixelFast Rand(24,775),Rand(208,391),15601937
         WritePixelFast Rand(24,775),Rand(392,575),14540049
      Next
   UnlockBuffer FrontBuffer()
   Delay 50
Next

Print "habe fertig"
WaitKey
End


Wenn es aber 'gut' programmiert werden soll, so würde ich mir Gedanken darüber machen, wie ich den Rechner dazu bringen kann, nicht Pixelweise per Zufall zu setzen, sondern so, dass jeder Pixel an einer bestimmten Position auch nur einmal gesetzt wird.

edit1: Kleine Korrektur am Code vorgenommen.



Dieser code ist nicht schlecht ich werde daran feilen und Danke an alle!
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group