Suche Verbesserungsvorschläge zu meiner ersten Übung

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Crossbow

Betreff: Suche Verbesserungsvorschläge zu meiner ersten Übung

BeitragMi, Jan 02, 2008 16:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi

Habe vor kurzem angefangen mich mit BB zu beschäftigen und bin somit ne hier im Forum. Kurz zu mir: Ich bin praktisch 17 Jahre alt, komme aus der Schweiz und mache nach der Schule eine Lehre als Informatiker.
Nun aber zu meiner Frage:
Nachdem ich einige Tutorials zu BB gelesen habe, habe ich mal ein kleines Programm erstellt das zwar keinen wirklich nutzen hat und auch nicht wirklich viel kann, sondern einfach da ist, um BB zu üben.

Code: [AUSKLAPPEN]
Print "Willkommen zu meinem Countdownprogramm"
Print ""
Delay (2000)
Cls
Print "Von wo soll der Count-Down beginnen?"
start% = Input ()
Print "Und wo soll er aufhören? "
ende% = Input()
Print "Sie haben " +start+ " gewählt"
Delay (500)
Print ""
X = Input ("bitte Enter drücken um fort zu fahren")
Delay (000)
start = start + 1
n = 1
For n = 1 To start
i = start - n
Print "" +i+""
Delay (1000)
If i = ende
Gosub sprungmarke
EndIf
Next
.sprungmarke
Cls
Delay (1500)
End


Am besten compiliert ihr es einfach da es kaum Sinn macht es zu erklären. Sobald ihr dann das Dosprogramm ausführt seht ihr schnell wozu das Progrämmchen ist. Ein Programm sagt mehr als 1000 Worte Very Happy .
Meine Frage ist nun, wie ihr das geschrieben hättet, da ich gleich von Anfang an, einen anständigen Style entwickeln will. Ansonsten werde ich früher oder später bei komplexeren Aufgaben grosse Problem bekommen Laughing .

Ich Danke schonmal im voraus für die Antwort Wink .

MfG Sämi

P.s: Erschwert einem BB den umstieg auf C++ oder eher im Gegenteil?
Das Frage ich darum, weil man sich viele Dinge angewöhnen kann, die in einer Hochsprache wie C++ komplett anders sind.
Man braucht in BB zum Beispiel keine Semikolons nach jedem Befehl.

Smily

BeitragMi, Jan 02, 2008 16:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo und herzlich wilkommen im Board Wink

Nun ja,
B+ ist prozendual und damit komplett anders als c++
Es kommt wohl auf den Programmierer an, insgesammt gibt es da eine Menge meinungen. Einige Sagen, von Basic würde man nur "Schlechte Angewohnheiten" in OOP übernehmen andere halten es für eine gute methode zum Einstieg. Es kommt darauf an, ob du berreit bist, beim Umstieg das eine oder andere nochmal komplett neu zu lernen. (Damit mein ich nicht nur den Syntax, sondern vor allem den logischen Programmaufbau)

Zu deinem Programm:

- Code Formatieren
- Auf Delay verzichten
- Auf Goto/Gosub verzichten.

cu,
Smily0412
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

The_Nici

BeitragMi, Jan 02, 2008 16:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Merke dir: Print ist nur ein DOS-Befehl und im Grafikmodus unbrauchbar. Benutze später "Text,x,y,String$" wenn du im Grafikmodus arbeitest.

Dazu sollte man Gosub und Goto und all das mit Go vermeiden. Benutze Function.
Rücke dazu in jeder Bedingung und Schleife ein, mit einem Tabulator.

Delay hält das ganze Programm an, setze dich später mit dem Befehl Millisecs() auseinander.

Input hält das ganze Programm an, setze dich später mit dem Befehl Getkey() auseinander.

Deklariere deine Variablen am Anfang des Programms. Dies verhindert später auftretende Fehler und macht dein Programm übersichtlicher.

Ich bin kein Bot, ich bin nicht einmal ein Mensch. Very Happy

EDIT: Heute habe ich mein Schnecken-Tag. Wieder zu spät. Sad

WüstLing

BeitragMi, Jan 02, 2008 18:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hy.. bin selber noch Anfänger..
Aber du könntest noch auf zehntel gehn (z.b.: 10,2)

robotx

BeitragMi, Jan 02, 2008 19:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Crossbow,

Wie schon gesagt wurde ist richtiges Einrücken des Codes sehr wichtig um den Überblick zu bewahren. Außerdem erkennt man Syntaxfehler (z.B. vergessenes "Next" bei einer Schleife) leichter.

Zu den Variablen:
-Gib den Variablen, Funktionen usw. klare Bezeichnungen (z.B. "lebenspunkte" und nicht "lbp" )
-Konstanten schreibt man groß
-Variablen schreibt man klein
-vermeide Globale Variablen, wenn es möglich ist

-Auch Kommentare gehören zu einem guten Stil dazu

Mit der Zeit entdeckt jeder seine Vorlieben und entwickelt seinen eigenen Stil.

Zitat:
Meine Frage ist nun, wie ihr das geschrieben hättet...


Ok, hier meine Version mit einer Function und ohne Goto/sub. Obwohl auch meine Version nicht die Vollkommenheit Gottes in Bezug auf den Programmablauf ist.

Code: [AUSKLAPPEN]

AppTitle "Einfaches Countdown fake Konsolenprogramm"

Graphics 500,320,16,2
SetBuffer BackBuffer ()



Global y = 0

Local wahl%
Local start%
Local ende%
Local dTime%


;Hauptschleife
Repeat
   
   
   y = y + 12
   Locate 10,y
   wahl% = Input ("Programmauswahl (1= neuer Countdown, 0 = Programm beenden): ")
   y = y + 12
   
   If wahl = 1 Then
      Locate 10,y
      start% = Input ("Startzahl: ")
      y = y + 12
      Locate 10,y
      ende% = Input ("Endezahl: ")
      y = y + 12
      Locate 10,y
      dTime%   = Input ("Runterzählzeit in ms: ")
      y = y + 12
   
      countdown (start, ende, dTime)
      
   Else
      Text 10,y, "Programm beendet"
      End
   EndIf
      
   
   
Until KeyHit (1)
End



Function countdown (tmpStart%, tmpEnde%, tmpDelta%)
   
   ;Variablendekleration
   Local startWert%
   Local endWert%
   Local aktuellerWert%
   
   Local startTime%
   Local deltaTime%   ; Zeit zwischen den Zahlen in ms
   Local aktuelleTime%
   
   
   startWert       = tmpStart
   endWert         = tmpEnde
   aktuellerWert    = tmpStart
   
   startTime%       = MilliSecs ()
   deltaTime%      = tmpDelta%
   aktuelleTime%    = 0
   
   Repeat
      
      
      aktuelleTime = MilliSecs ()
      
      If aktuelleTime > startTime + deltaTime Then
         
         ;Neuen Zeilen y Wert berechnen
         y = y + 12   ;y-Position des Textoutput
         
         ;Zahl ausgeben
         Text 10, y, aktuellerWert
         
         
         
         ;Überprüfen ob die Zahl noch ins Fenster passt, ansonsten von vorne (y = 0) anfangen
         If y >= GraphicsHeight () Then
            Cls
            y = 0
         EndIf
         
         ;Zahl um 1 verringern
         aktuellerWert = aktuellerWert - 1
         
         startTime = MilliSecs ()
         
      EndIf
      
      
      Flip
   Until aktuellerWert = endWert - 1 Or KeyHit (1) ;-1 da einschließlich endWert
   
   y = y + 12
   Text 10, y, "Countdown Ende"
   Flip
   
   
End Function


mfg robotx
www.botbomb.robotzgames.de
www.robotzgames.de
 

Crossbow

BeitragMi, Jan 02, 2008 19:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi

Grosses Lob an euch, ich finde eure Hilfsbereitschaft supper Wink

Na ja, mein Problem ist jetzt einfach ein bisschen, praktisch alle Deutschen Tutorials fangen mit Print & Co. an.
Ich habe mit meinem Code einfach mal versucht das gelesene zu vertiefen.
Wie gehe ich da am besten mit dem lernen vor? Habt ihr evtl. einen guten Tutorialvorschlag, dass nicht mit Print & Co. arbeitet?

MfG Sämi

P.s: Hat jemand von euch ICQ oder MSN damit ich ab und zu ein paar Fragen stellen kann (weil für jede kleinigkeit einen Thread zu schreiben... gerade am Anfang tauch recht viele Fragen auf, vorallem bei Dingen wie Types Cool )?
 

Dreamora

BeitragMi, Jan 02, 2008 19:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Am besten würde ich auf www.robsite.de die tutorial sektion für B3D ansehen und da vor allem Robs Tutorial 2 (12 Untertutorials) und das RPG Tutorial durcharbeiten

Damit solltest du die kompletten Grundlagen haben die du benötigst Smile
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

robotx

BeitragMi, Jan 02, 2008 21:34
Antworten mit Zitat
Benutzer-Profile anzeigen
http://www.blitzbase.de/
- Sammlung mit (fast) allen Befehlen in Blitz, gerade für den Anfang sehr gut um nachzuschauen.

mfg robotx
ICQ:307310950
www.botbomb.robotzgames.de
www.robotzgames.de

The_Nici

BeitragMi, Jan 02, 2008 21:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Print etc. ist auch brauchbar, aber nur für Debugzwecke.

Am besten nimmst du dir einfach noch www.blitzbase.de zur Hilfe, du findest dort Tutorials und eine Onlinehilfe auf Deutsch.

blitzuser34

Betreff: Meine Version

BeitragDo, Jan 03, 2008 16:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, hier mein Vorschlag:

Code: [AUSKLAPPEN]
Graphics 800,600,32,2

.error
zeitinsekunden=Input("Zeit in Sekunden: ")
If zeitinsekunden<1 Then Goto error

SetBuffer BackBuffer()

milsecszeit=MilliSecs()

While Not KeyHit(1)
Cls

zeit=MilliSecs()-milsecszeit
countdown=zeitinsekunden*1000-zeit
If countdown<0 Then Exit

stunden=countdown/3600000
zwischenrechnung=stunden*3600000
minuten1=countdown-zwischenrechnung
minuten=minuten1/60000
zwischenrechnung2=minuten*60000
sekunden2=countdown-zwischenrechnung-zwischenrechnung2
sekunden=sekunden2/1000

Text 10,10,stunden+":"+minuten+":"+sekunden

Flip
Wend

Setbuffer Frontbuffer()

Print "Ende"
Delay 1000

End

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group