Das erste kleine Projekt


Genaugenommen hast du jetzt die Basics von LUA drauf. Aber wie macht man denn nun ein Programm? Darauf möchte ich euch eine Antwort geben. Und zwar anhand eines simplen Malprogramms. Ich möchte jetzt allerdings nicht daraufhin hundert verschiedene Mini-Malprogramme auftauchen sehen.

Machen wir uns doch zuerst einmal Gedanken darüber, was man so alles brauchen könnte für das Malprogramm. Für ein simples Malprogramm brauchen wir:
1. Eine Malfläche
2. Einen Cursor
3. Tasten
4. Malfunktion

Vielleicht klingt das jetzt erstmal fürchterlich aufwendig, ist es aber gar nicht. Der Code sollte recht einfach zu verstehen sein. Der DPad-Code wird aber vielleicht für Verwirrung sorgen. Bei Fragen dazu einfach ins Forum posten. Den Cursor soll man nämlich mit dem DPad steuern. Für das DPad gibt es einen Standardcode, den wir auch hier verwenden. Nun aber zum Code:

	weiss = Color.new(255,255,255) --definiert die farbe weiss
	schwarz = Color.new(0,0,0) --definiert die farbe weiss
	
	malflaeche = Image.createEmpty(480,272) --erstellt ein neues, leeres Bild mit 480x272 Pixeln
	malflaeche:clear(weiss) --färbt das Bild "malflaeche" weiss
	
	cursor = Image.load("cursor.png") --lädt das Bild "cursor.png" in die Variable cursor
	cursor_x = 100 --Variable mit dem Wert 100, später unsere X-Position des Cursors
	cursor_y = 100 --Variable mit dem Wert 100, später unsere Y-Position des Cursors
	
	while true do --Mainloop
		pad = Controls.read() --DPad-Code...muss man nicht verstehen. Fragen bitte ins Forum posten
		
		dx = pad:analogX()
		dy = pad:analogY()
		
		if dx > 30 then
			cursor_x = cursor_x + (math.abs(pad:analogX())/64)
		end
		if dx < -30 then
			cursor_x = cursor_x - (math.abs(pad:analogX())/64)
		end
		if dy > 30 then
			cursor_y = cursor_y + (math.abs(pad:analogY())/64)
		end
		if dy < -30 then
			cursor_y = cursor_y - (math.abs(pad:analogY())/64)
		end --DPad-Code ENDE
		
		screen:blit(0,0,malflaeche) --zeigt die Malfläche an
		screen:blit(cursor_x, cursor_y, cursor, true) --zeigt das cursor auf cursor_x und cursor_y an
		
		if pad:cross() then
			malflaeche:drawLine(cursor_x, cursor_y,cursor_x, cursor_y,schwarz)
		end
		
		screen.flip()
		screen.waitVblankStart()
	end
	

Wenn ihr alles übernommen habt und abspeichert, solltet ihr ein sehr mageres Malprogramm besitzen^^...ich hoffe, ihr versteht, wie das Programm funktioniert. Wir haben erst 2 Farben definiert, weiss und schwarz. Dann habe wir ein leeres Bild mit der Auflösung 480x272 erstellt. Das ist dann später unsere Malfläche. Anschließend haben wir noch eine Grafik für den Cursor geladen und seine x und y Position bestimmt. Im Mainloop dann haben wir zuerst den Code für den DPad. Ihr fragt euch sicherlich, was das "> 30" usw bedeutet. Naja, die Erklärung ist denkbar einfach, das DPad kann ja mehr oder weniger sanft bewegt werden. Die DPad-Sensibilität reicht bis zu 128. Ohne das "> 30" würde sich der Cursor schon beim leichtesten Berühren stark bewegen. In den If-Anweisungen werden je nach Bewegung des DPads die Koordinaten des Cursors verändert. Nach diesem Code wird noch die Malfläche und der Cursor selbst ausgegeben. Und zu guter letzt, wenn man X drückt, soll noch ein Punkt auf die Malfläche gezeichnet werden...