Anfänge ?

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

ToeB

Betreff: Anfänge ?

BeitragSo, Jul 25, 2010 22:59
Antworten mit Zitat
Benutzer-Profile anzeigen
So da ich seit heute stolzer besitzer von BlitzMax bin, muss ich euch gleich mal mit Fragen zuspamen Wink

Ein bisschen kenn ich mich schon mit Blitzmax aus, hab schon ein mehr oder wenig kleines "Hallo Welt" Programm geschrieben in dem ich sogar Klassen und Klassenvererbung eingebaut haben Very Happy

Nya wie dem auch sei, ich möchte mich um die Sprache zu lernen einem Kleinem Test- Projekt widmen. Doch mir fehlen da leider die Ideen. Habt ihr welche ? (außer den typischen mach-doch-ein-ping-pong) Ich kann zwar Blitz3D, aber Max ist doch etwas anderes...deshalb etwas, das man auch ohne vielö Graphik zu lösen ist und möglichst nicht im Sampkle ordner drin vorkommt Wink

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Xeres

Moderator

BeitragSo, Jul 25, 2010 23:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Fang vielleicht mit einer Partikel-Spielerei an (Color, Alpha, Scale, Rotation usw.). Z.B. lass Teilchen Zusammenklumpen bis sich eine kritische Masse bildet und wieder explodiert... Mit Pause-Funktion (trennung von Zeichen- und Bewegungsmethoden).
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)

US-Blitz

ehemals "SimssmiS"

BeitragSo, Jul 25, 2010 23:07
Antworten mit Zitat
Benutzer-Profile anzeigen
vlt ein kleines upgrade game und vlt was mit phisics

mpmxyz

BeitragSo, Jul 25, 2010 23:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Um in OOP hineinzukommen, könnte man eine kleine GUI schreiben.
(eine Basis-Gadget-Klasse, erbende Gadgets)
Das war zumindest ein Projekt, welches mir gezeigt hat, wie schön die objektorientierte Programmierung sein kann.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

ToeB

BeitragSo, Jul 25, 2010 23:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Joa danke !

Aber da hätte ich dann auch gleich ein paar fragen (falls die erlaubt sind Wink )
Arrow Was machen die TList und TLink typen ?
Arrow Wofür steht das IncBin ?


mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Xeres

Moderator

BeitragSo, Jul 25, 2010 23:41
Antworten mit Zitat
Benutzer-Profile anzeigen
IncBin verwendet man um Mediendateien an die Exe an zu hängen.
Neben TMap ist TList eine Möglichkeit deine Objekte zu verwalten - In BB hatten Types jeweils eine Liste in die jedes Objekt automatisch mit NEW ein und DELETE ausgetragen wurde. In Bmax kümmerst du dich selber drum. Tlink ist dann ein Eintrag in der Liste.
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)

BladeRunner

Moderator

BeitragSo, Jul 25, 2010 23:42
Antworten mit Zitat
Benutzer-Profile anzeigen
TList ist eine doppelt verkettete Liste in der Du deine Objekte speichern kannst. Wenn Du in B3D einen Type erstellt hast wurde der automatisch in eine Blitzinterne Liste eingetragen. Bei Max musst Du dich da selbst drum kümmern.
Der TLink ist ein Bestandteil von TList, Quasi ein einzelnes Kettenglied. Die werden sehr sinnvoll wenn Du gezielt einzelne Elemente aus der Liste entfernen willst.


IncBin ist quasi ein Container um eigene Mediadateien an deine Exe anzuhängen, d.h. dein Programm kommt dann standalone ohne externe Dateien aus.

Ich empfehle Dir HotDocs um dir eine brauchbare Hilfe zu generieren.
HF.
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

ToeB

BeitragMo, Jul 26, 2010 0:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen dank hat mir weiter geholfen !!

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

ToeB

BeitragMo, Jul 26, 2010 12:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Sry für Doppelpost aber ich hab ne neue Frage ...

Wie kann ich, wenn ich ein TImage mit CreateImage erstellt habe bearbeiten ? (SetBuffer gibts ja nicht) also dort Linien und Rechtecke reinzeichnen (oder Bilder) ?

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

n-Halbleiter

BeitragMo, Jul 26, 2010 12:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst mittels LockImage (oder der Methode) die zu dem Bild zugehörige Pixmap erhalten und auf ihr Pixel modifizieren.

Soweit ich weiß, unterstützt Max2D in seiner Grundvariante so etwas (leider) nicht. Avas Engine kann das jedoch, wenn du bereit bist, dich auf eine andere Grafikengine und OpenGL einzulassen. Wink

(Alle Angaben zu Max2D ohne Gewähr, korrigiert mich, wenn ich falsch liege.)
mfg, Calvin
Maschine: Intel Core2 Duo E6750, 4GB DDR2-Ram, ATI Radeon HD4850, Win 7 x64 und Ubuntu 12.04 64-Bit
Ploing!
Blog

"Die Seele einer jeden Ordnung ist ein großer Papierkorb." - Kurt Tucholsky (09.01.1890 - 21.12.1935)

Xeres

Moderator

BeitragMo, Jul 26, 2010 12:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine Möglichkeit wäre GrabImage.

Hatte mir vor Zeiten mal ein Beispiel geschrieben:
BlitzMax: [AUSKLAPPEN]
SuperStrict
rem
Test um ein Bild zur Laufzeit zu erstellen...
endrem


Graphics(800, 600, 0, 60)
SetBlend(ALPHABLEND)
AutoMidHandle(True)

Local Bild:TImage = CreateImage(64, 64)
Cls
SetColor(255, 0, 0)
DrawOval(16, 16, 32, 32)
SetColor(255, 255, 255)
DrawLine(0, 0, 0, 63)
DrawLine(0, 63, 63, 63)
DrawLine(63, 63, 63, 0)
DrawLine(63, 0, 0, 0)
GrabImage(Bild, 0, 0)
rem
Breite und Höhe des erstellten Bildes werden ab der Position von
Grabimage vom Backbuffer eingelesen.
endrem

DrawText("Bild erstellt, bitte Taste drücken!", 300, 300)
Flip
WaitKey()

'* Testschleife:
Local w:Int, a:Float

Repeat

'*** Testrechteck ob Alpha tatsächlich da ist, oder nur schwarz:
SetRotation(0) ;SetAlpha(1)
DrawRect(400, 300, 50, 50)

'*** Das Gegrabte Bild:
w = (w + 1) Mod 360 ; SetRotation(w)
a = (a + 0.005) Mod 1 ; SetAlpha(a)
DrawImage(Bild, 400, 300)

Flip
Cls
Until KeyHit(KEY_ESCAPE) Or AppTerminate()
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)
 

n-Halbleiter

BeitragMo, Jul 26, 2010 13:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, vielen Dank, Xeres, für dieses lehrreiche Stück Code. Kommt davon, wenn man sich nicht mit der Materie auseinandersetzt. Rolling Eyes
mfg, Calvin
Maschine: Intel Core2 Duo E6750, 4GB DDR2-Ram, ATI Radeon HD4850, Win 7 x64 und Ubuntu 12.04 64-Bit
Ploing!
Blog

"Die Seele einer jeden Ordnung ist ein großer Papierkorb." - Kurt Tucholsky (09.01.1890 - 21.12.1935)

ToeB

BeitragMo, Jul 26, 2010 13:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank !!

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

ToeB

BeitragMo, Jul 26, 2010 14:00
Antworten mit Zitat
Benutzer-Profile anzeigen
So noch ne kleine Frage Embarassed

Wie sortiere ich eine Liste um (àla Insert bei Blitz3D) ?
Brauch ich für die GUI damit sich die Fenster richtig sortieren..

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Xeres

Moderator

BeitragMo, Jul 26, 2010 14:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Dazu wiederum findet sich folgender Code:
BlitzMax: [AUSKLAPPEN]
'http://www.blitzbasic.com/Community/posts.php?topic=77549#867760

SuperStrict


Type TNPCs
Global list:TList = CreateList()

Field x:Int, y:Int, Leben:Int, Mana:Int

Method New()
list.AddLast(Self)
End Method

Function DrawList()
Print("- - - - - - -")
For Local npc:TNPCs = EachIn TNPCs.list
Print(npc.y)
Next
End Function

Function SortY:Int(o1:Object, o2:Object)
Local n1:TNPCs = TNPCs(o1)
Local n2:TNPCs = TNPCs(o2)
Return n1.y - n2.y
End Function

End Type

For Local i:Int = 0 To 20
Local npc:TNPCs = New TNPCs
npc.x = Rand(0, 800)
npc.y = Rand(0, 600)
npc.leben = Rand(10, 100)
npc.Mana = Rand(10, 100)
Next

Local Start:Float = MilliSecs()
TNPCs.DrawList()
TNPCs.list.Sort(True, TNPCs.SortY)
TNPCs.DrawList()
TNPCs.list.Sort(False, TNPCs.SortY)
TNPCs.DrawList()
Local Dauer:Float = (MilliSecs() - Start)
Print("2 mal sortiert in " + Dauer + " ms")


Objekte werden mit der Compare-Methode verglichen, die könntest du auch verwenden. Siehe dazu meinen Beitrag zu BCC#37, 5Up Wink

Nachtrag, Ausschnitt:
BlitzMax: [AUSKLAPPEN]
'* THighScore
Type THighScore
Field name:String, points:Int
Global list:TList = CreateList()

Method New()
rem
werden neue einträge vorne angehangen, werden bei gleichem Punktwert neue
Einträge oben eingefügt - gibt dem Spieler ein größeres Erfolgserlebnis.
endrem

list.AddFirst(Self)
End Method

Method Compare:Int(H2:Object)
rem
Überladung der Compare-Methode erlaubt das Sortieren der Liste mit Sort()
Sortierung erfolgt natürlich nach Punkten.
endrem

Return THighScore(H2).points - Self.points
End Method

Function Load()
If FileType("H.score") = 0 Then
'* Neuer Highscore / erster Start
For Local i:Int = 0 Until 10
THighScore.Add("Xeres", Rand(0, 9))
Next
Else
'* Alten Highscore lesen.
Local f:TStream = OpenFile("H.score")
For Local i:Int = 0 Until 10
Local l:Int = f.ReadInt()
Local n:String = f.ReadString(l)
Local p:Int = f.ReadInt()
THighScore.Add(n, p)
Next
CloseFile(f)
EndIf
End Function

Function Save()
THighScore.list.Sort()
Local f:TStream = WriteFile("H.score")
'* Nur die ersten 10 Plätze werden gespeichert.
For Local i:Int = 0 Until 10
Local H:THighScore = THighScore(THighScore.list.ValueAtIndex(i))
f.WriteInt(H.name.Length)
f.WriteString(H.name)
f.WriteInt(H.points)
Next
CloseFile(f)
End Function

Function Add(_name:String, _points:Int)
Local H:THighScore = New THighScore
H.name = _name
H.points = _points
End Function

End Type

Anwendung findet die Sortierung in der Save() Funktion.
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)

Goodjee

BeitragMo, Jul 26, 2010 14:18
Antworten mit Zitat
Benutzer-Profile anzeigen
das ist aber nicht was er wollte...

du gehst folgendermaßen vor:

du löschst den momentanen eintrag aus der liste.
lässt dir den link zurückgeben vor oder nachdem du etwas einfügen willst mit TList.FindLink()
und dann kannst du mit TList.InsertAfterLink() bzw TList.InsertBeforeLink() den Eintrag neu einfügen
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

ToeB

BeitragMo, Jul 26, 2010 14:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Was ist denn da jetzt genau anders mit CreateList ? kann ich auch "New TList" schreiben ? und wie genau sehen die Parameter der sort function aus ?

Danke trotzdem !

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Goodjee

BeitragMo, Jul 26, 2010 14:20
Antworten mit Zitat
Benutzer-Profile anzeigen
CreateList() macht nur "Return New TList"

die sortfunktion kriegt als parameter einen funktionszeiger auf eine funktion die 2 objekte der liste vergleicht.
aber wiegesagt, für deine anwendung ist Sort nicht die richtige herangehnsweise
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

Xeres

Moderator

BeitragMo, Jul 26, 2010 14:23
Antworten mit Zitat
Benutzer-Profile anzeigen
CreateList und New Tlist sind Äquivalent. Ich mag die Version nur persönlich lieber.
Die Methode Sort() hat die 2 Parameter, True/False für auf oder absteigend und eine Compare-Funktion die zwei Objekte miteinander vergleicht.
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)

ToeB

BeitragMo, Jul 26, 2010 14:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah okay... und wie kann ich es sonst machen ?

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group