Suche Verbesserungsvorschläge zu meiner ersten Übung
Übersicht

CrossbowBetreff: Suche Verbesserungsvorschläge zu meiner ersten Übung |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() 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 ![]() Ich Danke schonmal im voraus für die Antwort ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo und herzlich wilkommen im Board ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. ![]() EDIT: Heute habe ich mein Schnecken-Tag. Wieder zu spät. ![]() |
||
![]() |
WüstLing |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hy.. bin selber noch Anfänger..
Aber du könntest noch auf zehntel gehn (z.b.: 10,2) |
||
![]() |
robotx |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi
Grosses Lob an euch, ich finde eure Hilfsbereitschaft supper ![]() 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 ![]() |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
robotx |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. |
||
![]() |
blitzuser34Betreff: Meine Version |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group