Kritik an Midimaster-Tutorials

Übersicht BlitzBasic Allgemein

Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6  Weiter

Neue Antwort erstellen

Noobody

BeitragFr, Jan 01, 2010 22:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Midimaster hat Folgendes geschrieben:
Hier ist es (anders als in BlitzMax) nicht möglich eine neue Variable t als Kopie der original p in der Funktion zu manipulieren, ohne dass sich auch t ändert.

Auch in BMax wird das Originalobjekt verändert, wenn man nicht explizit eine Kopie anfertigt. Anders als in C/++ wird bei einer Zuweisung der Type referenziert und nicht kopiert.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

count-doku

BeitragDi, Jan 05, 2010 10:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

midimaster, deine Tutorials sind echt gut Very Happy

Wäre es aber nicht sinnvoller im Programmablauftutorial das laden von Bildern,Sounds usw.
was du immer am Anfang machst, in eine Funktion zu packen und diese am Anfang aufzurufen?

mfg,
count-doku

Tennisball

BeitragDi, Jan 05, 2010 22:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Nur ein paar Bemerkungen zum Code von mir:

https://www.blitzforum.de/foru...610#355610
Im vorletzten Code steht:
Code: [AUSKLAPPEN]
Spieler\X=Spieler\+1


https://www.blitzforum.de/foru...849#355849
Zitat:
For G.GegnerTyp = Each GegnerTyp
Delete g
Next

Könnte man auch (afaik) so schreiben:
Code: [AUSKLAPPEN]
Delete Each GegnerTyp

Ist aber kein Fehler, kann man ja machen wie man will.

mfg,
Tennisball

Midimaster

BeitragDi, Jan 05, 2010 23:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, Tennisball,


ich bring es gleich in Ordnung


@count-doku

bin mir noch nicht sicher, ob ich es schon an so früher Stelle bringen will. aber der Gedanke ist natürlich richtig!

Nicdel

BeitragFr, Jan 08, 2010 11:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
verschiedene Level trennen


Ist damit so etwas wie "eigenes Levelformat entwerfen und verwenden" gemeint? Wenn nein würde ich das noch reinmachen Smile
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Midimaster

BeitragFr, Jan 08, 2010 13:35
Antworten mit Zitat
Benutzer-Profile anzeigen
So speziell möcht ich es in der Überschrift nicht benennen. Ich will den Anfängern nur die Angst nehmen, mit Dateien zu arbeiten. ES geht nur um die sinnvolle Kombination der FILE-Befehle READFILE(), READLINE() CLOSEFILE().

Und (und da kennst Du mich ja nun schon) das Weglassen der Befehle, die der Anfänger für eine elementare Lösung zunächst nicht braucht: FILESEEK(), READINT(),etc... Eben alles, was der Optimierung dient, lasse ich weg.

Außerdem geht es um die Problematik, wie man einem Paramter zweifelsfrei die richtige Zeile in der INI-Datei zuordnet. Wie man mehrere Werte für den gleichen Parameter ermöglicht (Levels).Dabei soll der (ich nenn ihn jetzt mal) "Student", selbst auf das Problem gestossen werden.

Im Tutorial werde ich daher auf Spiel-Levels und ihre Parameter eingehen.Aber eben auch auf nicht existierende Dateien und Probleme mit de Eindeutigkeit bei Parameternamen ( z.B. "Spiel" und "Spieler")

Nicdel

BeitragFr, Jan 08, 2010 14:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah, gut zu wissen Smile
Deine FileExists-Funktion ist etwas sinnlos. Dafür gibt es schon FileType, diese Funktion gibt bei einer Datei ebenfalls True zurück, bei einem Ordner 2.
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Midimaster

BeitragFr, Jan 08, 2010 14:15
Antworten mit Zitat
Benutzer-Profile anzeigen
@nicdel:
dein vorschlag gefällt mir besser, ich werde es übernehmen. es bleibt aber bei der "sinnlosen" FileExists(), weil ich damit später noch etwas vorhabe...

hamZta

Administrator

BeitragFr, Jan 08, 2010 14:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Zum Files-Tutorial: Du schreibst dort immer INI-Datei. Der Aufbau einer solchen Datei ist allerdings wie folgt:
Code: [AUSKLAPPEN]
[Sektion]
Feld=Wert
Feld2=Wert
[Sektion2]
Feld3=Wert
...


Siehe hier.

Du liest eine ganz normale Textdatei ein. Um Verwirrungen zuvorzukommen solltest du das ausbessern.
Blog.

Midimaster

BeitragFr, Jan 08, 2010 16:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Antwort auf Fredko:
Zitat:
...wäre vielleicht auch noch eine kleine Skriptsprache für Neulinge
wohl interressant, z.B. wenn in einer Zeile "X 1004" steht, dass irgendein
X Wert befüllt wird. Somit könne man vorallem bei einer Informationsliste
Einträge von außen erstellen, wo dann noch a) keine Ordnung der Datei
und b) vordefinierte Werte genutzt werden können, sodass man nicht immer
alles angeben muss....


Die "Script-Sprache", wie Du sie nennst kommt tatsächlich! Aber eben erst im nächsten Kapitel. Ich will den Leser nicht mit einer fertigen, optimalen Lösung konfronieren, er selbst soll in mehreren Stufen darauf kommen, das Modell I zwar funktioniert, aber Schwächen hat, weshalb er dann Lektion III lesen will.

Ich nenne das das "System der halben Wahrheiten". Dabei wird immer eine machbare Lösung vorgeführt und daraus der nächste Ansatz entwickelt. Jeder entscheidet selbst, wie weit er das Tutorial durchhalten will, und wann der Aufwand für sein Projekt genügt.

@hamZta
Genau da will ich den User hinkriegen, aber eben durch Erkenntnis der Notwendigkeit. Deshalb in 3 Stufen (3 Lektionen)

reine Auflistung (gut bis 10 Werte) Zitat:
Hubert
23
100.90

Bezeichner und Parameter (gut bis 100 Werte) Zitat:
Name=Hubert
Alter=23
Geld=100.90

vollständige INI-Diktion Zitat:
[Spieler]
Name=Hubert
Alter=23
[Level 1]
Geld=100.90
...
 

Fredko

BeitragFr, Jan 08, 2010 20:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Sicher, dass
BlitzBasic: [AUSKLAPPEN]

Wert=Mid( Zeile, Da+1, 999)

nicht ein klein wenig schlechter ist als
BlitzBasic: [AUSKLAPPEN]

Wert=Mid(Zeile,Da+1,Len(stringquelle)-da)

bzw. was ähnliches mit right? Sonst wäre die Funktion Len bei Strings
auch so unerlässlich, da diese die Länge des Strings angibt. Sonst schaut
Kapitel 3 Ende ganz gut aus Smile
!

Midimaster

BeitragFr, Jan 08, 2010 20:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Fredko

danke für den Hinweis. Solche eine Schlamperei kommt noch aus meiner VB6 Zeit. Aber in ein BB-Tutorial gehört es so natürlich wirklich nicht hinein.


In BB geht es nämlich schöner, ich hab mich schlau gemacht. Leider übernehme ich jetzt aber nicht deinen Code sondern das, was in der Hilfe zu Mid$ steht: -1

Zitat:
...Anzahl der zu kopierenden Zeichen (ab 1)
Hinweis: bei -1 wird alles bis zum Ende kopiert...

Eingeproggt

BeitragFr, Jan 08, 2010 23:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Man braucht nichtmal -1 anzugeben, das ist nämlich Standard in Blitz dass man alle Zeichen bis zum Ende zurück bekommt von Mid.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Nicdel

BeitragMi, Jan 13, 2010 16:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Schönes Tutorial, wie man es von dir gewöhnt ist Smile
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Xeres

Moderator

BeitragFr, Jan 22, 2010 14:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Im Type Tutorial, letztes Beispiel: Was macht das "40ee593738" da drinnen?
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)

Midimaster

BeitragFr, Jan 22, 2010 14:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Xeres

Danke für den Hinweis, ich seh es auch, kann es aber im Editor nicht wiederfinden:

Zitat:
...
PRINT Strasse(MyPos)\Miete[0] + " EUR als unbebautes Grundstück."
For i=1 to 4
PRINT Strasse(MyPos)\Miete[i] + " EUR mit " + i + " Haus."
Next
PRINT Strasse(MyPos)\Miete[5] + " EUR mit einem Hotel"
....


ich lösch mal die ganze Zeile und schreib sie einfach neu. Aber vielleicht sollte man die Beobachtung als Fehlermeldung ins Forum-Thread stellen.

So, gelungen nu isses weg.

Jo0oker

BeitragDo, Feb 04, 2010 14:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Zu deinem Tutorial in Bezug auf Programmaufbau würde ich noch eine Option hinzufügen, die ich meistens wähle:

MeinProjekt.bb:
BlitzBasic: [AUSKLAPPEN]


; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; MeinProjekt.BB
; MeinProjekt ist (c) Max Mustermann / Mustermann-Team
;
; Beschreibung:
; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

; Version:
Const MEINPROGRAMM_VERSION$ = "0.0.1.1" ;Versionsnummer des Programmes

; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;[Block] Includes
; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;Include
;!HIER KOMMEN ALLE INCLUDES HIN
#Include "HauptDatei.bb"
; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

;[End Block];
; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::




; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;;Projekt Initialisieren
Projekt_Init()
; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; Projekt Hauptschleife
Repeat

; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;Beinhaltet alle Update-Funktionen
CompleteUpdate ()
; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; 3D Grafiken Render, Buffer leeren
UpdateWorld
RenderWorld
; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; 2D-Update
Conplete2D_Update ()
; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;Timer
WaitTimer (g_iMWaitTimer)
; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Flip 0

Forever
; ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::



HauptDatei.bb
BlitzBasic: [AUSKLAPPEN]

; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; HauptDatei.BB
; MeinProjekt ist (c) Max Mustermann / Mustermann-Team
;
; Beschreibung: Hauptdatei
; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; Alles initialisieren
Function Projekt_Init()

; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Graphics....
; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;Andere Systme Initialisieren
; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

End Function


; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; Alles komplettes Update auf alles
Function CompleteUpdate ()

; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;Hier generell alle Systeme Updaten...
; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

End Function

; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; Alles im Bereich 2D updaten
Function Conplete2D_Update ()

; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;Hioer alle 2D Sachen rein
;Wie Text, Rect und co.
; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

End Function


Für Mich hat sich dieser Programmaufbau sehr bewärt, da ich auch in anderen Schleifen dann nur noch CompleteUpdate()
aufrufen muss, und ich habe immer alle Updates der Systeme beisammen.

Auch könnte man innheralb von CompleteUpdate nochmal unterschiedlich gruppieren, je nach Bedarf.

lg Jo0oker
Tehadon, das kostenlose 3D RPG
www.tehadon.de
http://www.blitzforum.de/worklogs/14/
Das Abenteuer wird beginnen!
  • Zuletzt bearbeitet von Jo0oker am Do, Feb 04, 2010 14:53, insgesamt 2-mal bearbeitet

Midimaster

BeitragDo, Feb 04, 2010 14:46
Antworten mit Zitat
Benutzer-Profile anzeigen
@JoOoker

da ist grundsätzlich nichts dagegen zu sagen. Es sprengt zwar den Umfang des Wissenstand eines Total-Anfängers, aber warum nicht nach den ersten Kapiteln jetzt mal einen Code-Rahmen für fortgeschrittenere Programme...

Also meinetwegen könnten wir das unten dranhängen. ABER:

Bis jetzt sieht es eher aus wie etwas fürs Code-Archiv. Da es ja ein Tutorial sein soll, ,müsstest Du schon erläutern wozu die einzelnen Block sind und warum das jeweils so gut sein soll. Außerdem wär ein Absatz über das Includen sehr sinnvoll. Das wäre noch ein ganzes Stück Arbeit für Dich....

In dem Code finde ich die massenweise Doppelpunkte eher unübersichtlich. Wie sieht es mit Unterstrichen über nur die Hälfte der Breite aus?



BlitzBasic: [AUSKLAPPEN]
;
; ------------------MeinProjekt.BB------------
; MeinProjekt ist (c) Max Mustermann / Mustermann-Team

; Version:
Const MEINPROGRAMM_VERSION$ = "0.0.1.1"


; --------------- Includes----------------

#Include "HauptDatei.bb"


;----------------Projekt Initialisieren---------
Projekt_Init()



;--------------- Projekt Hauptschleife----------
Repeat




....


Und die Tutorial-Erklärungen würde ich nicht als Kommentare in den Code einfügen. Das wäre jetzt deine Aufgabe das didaktisch sinnvoll rüberzubringen.


Was denkst du?

Jo0oker

BeitragDo, Feb 04, 2010 14:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Das war nur ein Vorschlag, ich dachte du würdet das nochmal überarbeiten Wink

lg Jo0oker
Tehadon, das kostenlose 3D RPG
www.tehadon.de
http://www.blitzforum.de/worklogs/14/
Das Abenteuer wird beginnen!

Midimaster

BeitragDo, Feb 04, 2010 15:16
Antworten mit Zitat
Benutzer-Profile anzeigen
ach so...

nee, mach du doch!!! Mein Thema ist ja eher immer der total verlorene Anfänger ohne irgendwelche Kenntnisse von gutem Programmierstil. Leute, die OOP und Kapselung irgendwie verpasst haben...

So einer will zunächst den Code wenigstens auf einer Code-Seite stehen haben. Ich finde es z.B. erschreckend wieviele der Anfänger nicht wissen, dass Functionen auch nach der END-Anweisung und damit nach der Repeat/Until-Mainschleife stehen dürfen (bzw....stehen sollen). Ich weiss gar nicht wie die drauf kommen eine Function plötzlich und unvermutet mitten in ein Spaghetti-Desaster zu erstellen. Irgendwo müssen die das ja aufgeschnappt haben...

Bin da grad an zwei Baustellen dran. Ich seh zwar die Probleme, die die Leute da haben, kann ihnen auch gut helfen, aber weiß aber nicht recht, wie ein Tutorial aussehen könnte, damit es denen (im Selbststudium) geholfen hätte. Bis dahin helf ich in "Einzelberatung".

Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group