Miniaufgaben für Noobs und Umfrage

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2, 3  Weiter

Neue Antwort erstellen

Sollen mehr von so kleinen Aufgaben stattfinden?
Ja 82% 82% 42 Stimmen
Nein 17% 17% 9 Stimmen
Insgesamt 51 Stimmen

cofter

Betreff: übung1

BeitragDi, März 29, 2005 15:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich zeig mal meinen Code. Embarassed

Könnte sein das ich zur Zeit etwas abgelenkt bin das ich net von allein drauf komme. Rolling Eyes

Er zeichnet die Blöcke übereinander.
BlitzBasic: [AUSKLAPPEN]

Graphics 800, 600, 32, 2
SetBuffer BackBuffer()
AppTitle \"ÜbungsAufgabe!\"

Global minX=0
Global minY=0

Global maxX=800
Global maxY=600


Global x=0
Global y=0



While Not KeyHit(1)


For i=0 To maxX
Cls
Color 200,i,i
Rect (i+32,y,32,32)

Locate i+32,y
Color 0,0,0
Print i

Flip

Next


Wend
End
Was ich net kenn, mach ich kaputt... Very Happy

Artemis

BeitragDi, März 29, 2005 15:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry Cofter!
WAS IST DAS FÜR EINE AUFGABE?

Hier sind die Lösungen: (alle Lösungen können natürlich unterschiedlich sein! Es gibt (fast) keine Musterlösung)
Aufgabe 1: (von D²O)
BlitzBasic: [AUSKLAPPEN]

Graphics 800,600,32,2 ;grafikmodus setzen
img = CreateImage(800,600)
SetBuffer(ImageBuffer(img))
Color 255,255,255
For y = 0 To 600 Step 32;schleife für y
For x = 0 To 800-32 Step 32;schleife für x
Rect x,y,x+32,y+32,0;rechteck x,y,x+größe,y+größe,nicht_gefüllt
Text x+16,y+16,zahl,1,1;text x+halbe_größe,y+halbe_größe,text,gemittelt,gemittelt
zahl = zahl + 1;zahl eins hochsetzen
Next;schleife ende
Next;schleife ende
MaskImage img,255,255,255
SetBuffer(BackBuffer());buffer setzen
While Not KeyHit(1);wenn [esc] nicht gedrückt wird/wurde
Cls;bildschirm löschen
For y = 0 To 600 Step 32;schleife für y
For x = 0 To 800-32 Step 32;schleife für x
Color Rand(0,255),Rand(0,255),Rand(0,255);farbe per zufall
Rect x,y,x+32,y+32,1;rechteck x,y,x+größe,y+größe,nicht_gefüllt
Next;schleife ende
Next;schleife ende
DrawImage img,0,0
Flip;buffer flippen
Wend;schleife ende
End;ende

oder soBlitzBasic: [AUSKLAPPEN]
Graphics 800,600,32,2 ;grafikmodus setzen
SetBuffer(BackBuffer());buffer setzen
While Not KeyHit(1);wenn [esc] nicht gedrückt wird/wurde
Cls;bildschirm löschen
For y = 0 To 600 Step 32;schleife für y
For x = 0 To 800-32 Step 32;schleife für x
Color Rand(0,255),Rand(0,255),Rand(0,255);farbe per zufall
Rect x,y,x+32,y+32,0;rechteck x,y,x+größe,y+größe,nicht_gefüllt
Text x+16,y+16,zahl,1,1;text x+halbe_größe,y+halbe_größe,text,gemittelt,gemittelt
zahl = zahl + 1;zahl eins hochsetzen
Next;schleife ende
Next;schleife ende
zahl = 0
Flip;buffer flippen
Wend;schleife ende
End;ende


Aufagbe 2: (von mir)
BlitzBasic: [AUSKLAPPEN]
Graphics 800,600,32,2;grafikmodus
SetBuffer(BackBuffer());buffer
x = 400;start koordinate x
y = 300;start koordinate y
Repeat
Cls
;bei tasten druck bewegen
If KeyDown(200) Then y = y - 2;hoch
If KeyDown(208) Then y = y + 2;runter
If KeyDown(203) Then x = x - 2;links
If KeyDown(205) Then x = x + 2;rechts
If x < 5 Then x = 5;rand
If x > 795 Then x = 795;rand
If y < 5 Then y = 5;rand
If y > 595 Then y = 595;rand
Color Rand(0,255),Rand(0,255),Rand(0,255);zufallsfarbe
Rect x-5,y-5,11,11,1;rechteck
Flip;flippen
Until KeyHit(1);bis [esc] gedrückt wurde
End;ende
  • Zuletzt bearbeitet von Artemis am Di, Apr 04, 2006 14:45, insgesamt einmal bearbeitet

Spikespine

BeitragDi, März 29, 2005 15:46
Antworten mit Zitat
Benutzer-Profile anzeigen
schön.
Ich habs etwas anders:
BlitzBasic: [AUSKLAPPEN]
Graphics 800,600,16,2
SeedRnd MilliSecs()
SetBuffer BackBuffer()
While Not KeyHit(1)
Cls
For x=0 To 24
For y=0 To 17
Color Rand(0,255),Rand(0,255),Rand(0,255)
Rect x*32,y*32,32,32,0
Text x*32+16,y*32+16,(x+(y*24)+y),1,1
Next
Next
Flip 0
Wend
End


leider unkommentiert.

kommt gleich die nächste Aufgabe?
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax

Artemis

BeitragDi, März 29, 2005 16:08
Antworten mit Zitat
Benutzer-Profile anzeigen
ich muss noch ein bissel überlegen!
kommt entweder heute noch oder morgen früh!

Bigmichi

BeitragDi, März 29, 2005 16:09
Antworten mit Zitat
Benutzer-Profile anzeigen
ok meins bissi länger als eure aber die hauptroutine is die gleiche nru bissi mehr schnickschnak und hm durcheinander im code Wink

BlitzBasic: [AUSKLAPPEN]
Strict

Framework brl.glmax2d
Import brl.random

Global GX=1024,GY=768,GB=0

Graphics GX,GY,GB,-1

Global Status:Byte

Type TKasten
Global KastenList:TList
Field X,Y:Int
Field Zahl
Field Winkel:Int
Field ALp#
Field R,G,B:Int
Field RX,RY:Int
Field Pos:Byte

Function create:TKasten(X:Int,Y:Int,Zahl:Int)
Local K:TKasten

K = New TKasten
K.X = X
K.Y = Y
K.Zahl = Zahl
K.WInkel = Rand(0,360)

K.RX = X*32
K.RY = Y*32

K.R = 0'Rand(0,255)
K.G = 0'Rand(0,255)
K.B = 0'Rand(0,255)

KastenList.AddLast(K)

Return K
End Function

Function DrawAll()
Local K:TKasten


For K = EachIn Self.KastenList

K.Winkel :+ 1
If K.Winkel > 360 Then K.Winkel = 0

K.Alp = Cos(K.Winkel)
If K.Alp < 0 Then K.Alp = K.Alp * (-1)

SetAlpha Cos(K.Alp)

SetColor 0,128,K.B
DrawRect K.RX,K.RY,32,32
SetColor 0,0,0
DrawRect K.RX+1,K.RY+1,30,30
SetColor 0,128,K.B

DrawText K.Zahl,K.RX+3,K.RY+8

K.B = (100-((W2-(K.RX))*100/GX))

If K.B > 100 Then K.B = 200 - K.B

K.B = (K.B * 200) / 100

Next
End Function


Function MoveOUT()
Local K:TKasten
Local AB:Int = 0

For K = EachIn Self.KastenList
If K.Y Mod 2 = 0 Then
If K.RX < GX+32 Then
K.RX :+ 5
AB = 1
End If

Else
If K.RX > 0-32 Then
K.RX :- 5
AB = 1
End If

End If
Next

Return AB
End Function



Function MoveIN()
Local K:TKasten
Local AB:Int = 0

For K = EachIn Self.KastenList
If K.Y Mod 2 = 0 Then
If K.RX > K.X*32 Then
K.RX :- 5
AB = 1
End If

Else
If K.RX < K.X*32 Then
K.RX :+ 5
AB = 1
End If

End If
Next

Return AB
End Function



End Type

SetBlend AlphaBlend

TKasten.KastenList = CreateList()

Local X,Y:Int
Local Z:Int

DebugLog GX/32

For Y = 0 To (GY/32)-1
For X = 0 To (GX/32)-1
Z :+ 1
Tkasten.create(X,Y,Z)
Next
Next

Local Timer:Int

Global W1=30:Int
Global W2#

Timer = MilliSecs()




While Not KeyHit(Key_escape)


If Timer + 7000 < MilliSecs()
Status = 1
Timer = MilliSecs()
End If


If Status = 1 Then
If TKasten.MoveOUT() = 0 Then Status = 2
End If

If Status = 2 Then
If TKasten.MoveIN() = 0 Then Status = 0
End If

W1 :+ 1
If W1 > 360 Then W1 = 0
W2 = Cos(W1)*GX
If W2 < 0 Then W2 = W2 * (-1)

TKasten.DrawAll()

Flip
Cls
FlushMem()
Wend
End

Artemis

BeitragDi, März 29, 2005 16:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit blitzmax??
mach mal ne exe sonst können das viele (ich auch) nicht ansehen!

Spikespine

BeitragDi, März 29, 2005 16:14
Antworten mit Zitat
Benutzer-Profile anzeigen
wow, wat ist denn das für ein riesiger code?
Wenn das der unterschied zwischen BlitzMax und Blitz2D ist, dann bleib ich bei 2D Laughing

Oder ist das viel "Schnickschnack" was du da eingebaut hast?
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax

blitzmaster

BeitragDi, März 29, 2005 16:15
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab mir auch was einfallen lassen:
Aufgabe Nr. 3:
Programmiert eine Eingaberoutine, die den Anwender auffordert seinen Namen einzugeben. (also einen Ersatz für Input) Coursor muss nicht dabei sein. Die Rücktaste sollte auch berücksichtigt werden.

Also, viel Spaß!
***************
Blitzmaster
  • Zuletzt bearbeitet von blitzmaster am Di, März 29, 2005 18:23, insgesamt 2-mal bearbeitet

Waveblue

BeitragDi, März 29, 2005 16:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Mein Code:
BlitzBasic: [AUSKLAPPEN]
Graphics 800,600,32,2
SeedRnd MilliSecs()
SetBuffer BackBuffer()



Repeat
Cls

zahl=0




For x=0 To 24
For y=0 To 18


Color Rand(255),Rand(255),Rand(255)
Rect x*32,y*32,32,32

Color 255,255,255
Text x*32,y*32,zahl

zahl=zahl+1

Next
Next


Flip

Until KeyHit(1)
This is 10% luck
20% skill
15% concentrated power of will
5% pleasure, 50% pain
and 100% reason to remember the name
  • Zuletzt bearbeitet von Waveblue am Di, März 29, 2005 16:41, insgesamt einmal bearbeitet

Artemis

BeitragDi, März 29, 2005 16:29
Antworten mit Zitat
Benutzer-Profile anzeigen
@ wave
wofür das hier?
BlitzBasic: [AUSKLAPPEN]
Dim schirm(24,18)


@spikespine
guck mal, das hier ist die typedefinition:BlitzBasic: [AUSKLAPPEN]
Type TKasten 
Global KastenList:TList
Field X,Y:Int
Field Zahl
Field Winkel:Int
Field ALp#
Field R,G,B:Int
Field RX,RY:Int
Field Pos:Byte

Function create:TKasten(X:Int,Y:Int,Zahl:Int)
Local K:TKasten

K = New TKasten
K.X = X
K.Y = Y
K.Zahl = Zahl
K.WInkel = Rand(0,360)

K.RX = X*32
K.RY = Y*32

K.R = 0'Rand(0,255)
K.G = 0'Rand(0,255)
K.B = 0'Rand(0,255)

KastenList.AddLast(K)

Return K
End Function

Function DrawAll()
Local K:TKasten


For K = EachIn Self.KastenList

K.Winkel :+ 1
If K.Winkel > 360 Then K.Winkel = 0

K.Alp = Cos(K.Winkel)
If K.Alp < 0 Then K.Alp = K.Alp * (-1)

SetAlpha Cos(K.Alp)

SetColor 0,128,K.B
DrawRect K.RX,K.RY,32,32
SetColor 0,0,0
DrawRect K.RX+1,K.RY+1,30,30
SetColor 0,128,K.B

DrawText K.Zahl,K.RX+3,K.RY+8

K.B = (100-((W2-(K.RX))*100/GX))

If K.B > 100 Then K.B = 200 - K.B

K.B = (K.B * 200) / 100

Next
End Function


Function MoveOUT()
Local K:TKasten
Local AB:Int = 0

For K = EachIn Self.KastenList
If K.Y Mod 2 = 0 Then
If K.RX < GX+32 Then
K.RX :+ 5
AB = 1
End If

Else
If K.RX > 0-32 Then
K.RX :- 5
AB = 1
End If

End If
Next

Return AB
End Function



Function MoveIN()
Local K:TKasten
Local AB:Int = 0

For K = EachIn Self.KastenList
If K.Y Mod 2 = 0 Then
If K.RX > K.X*32 Then
K.RX :- 5
AB = 1
End If

Else
If K.RX < K.X*32 Then
K.RX :+ 5
AB = 1
End If

End If
Next

Return AB
End Function



End Type

blitzmaster

BeitragDi, März 29, 2005 16:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier meine Lösung für Aufgabe 1
BlitzBasic: [AUSKLAPPEN]
Graphics 800,600    
SetBuffer BackBuffer()

SeedRnd MilliSecs()

Dim ColorRect(500,3)

AppTitle \"BSP 1: Lösung von Blitzmaster\"

Repeat
Cls

For I = 1 To 600 Step 32
For A = 1 To 800 Step 32
Z = Z + 1
Color Rand(255),Rand(255),Rand(255)
Rect A,I,32,32,0
Color 255,255,255
Text A+5,I+5,Z
Next
Next
Z = 0
Flip
Until KeyDown(1)
End
***************
Blitzmaster

Waveblue

BeitragDi, März 29, 2005 16:43
Antworten mit Zitat
Benutzer-Profile anzeigen
JonasCleve hat Folgendes geschrieben:
@ wave
wofür das hier?
BlitzBasic: [AUSKLAPPEN]
Dim schirm(24,18)




Ups!
Das liegt daran, dass das meine umgebaute Qweeky-Tileengine ist! Embarassed
This is 10% luck
20% skill
15% concentrated power of will
5% pleasure, 50% pain
and 100% reason to remember the name

Artemis

BeitragDi, März 29, 2005 16:44
Antworten mit Zitat
Benutzer-Profile anzeigen
assoh!!
Sacht ma bescheid, wann ich die Lösung zur dritten reintuen soll!

Artemis

BeitragDi, März 29, 2005 16:59
Antworten mit Zitat
Benutzer-Profile anzeigen
/hab mal editiert
 

mipooh

BeitragDi, März 29, 2005 17:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Tja, Bigmichi, das war zwar hübsch, aber ich glaub, voll daneben.

Ist schon beeindruckend, wie gross so eine exe in blitzmax wird. Die Beispiele in Blitzbasic kann ich mir leider nicht ansehen, da ich kein Blitzbasic habe.

Hier mal mein Blitzmax-code, die .exe bzw. linux-datei hatte ich ja schon geposted:
Code: [AUSKLAPPEN]
Graphics 800,600
Global zahl=0
While Not KeyHit(key_Escape)
If x<800 And y<600
For y= 0 To 600
For x= 0 To 800
SetColor (Rand (1,255)),(Rand(1,255)),(Rand (1,255))
DrawRect x,y,32,32
SetColor (255,255,255)
If zahl <10
DrawText zahl,(x+10),(y+10)
ElseIf zahl <100
DrawText zahl,(x+8),(y+8)
Else
DrawText zahl,(x+4),(y+4)
EndIf
x:+31
zahl=zahl+1
Next
y:+31
Next
Flip
EndIf
Cls
Wend
End
Das war die 1 und nun die 2:
Code: [AUSKLAPPEN]

Graphics 800,600
DrawRect x,y,10,10
Flip
While Not KeyHit(key_Escape)
If KeyDown(key_left)
x:-10
If x<10
x=0
EndIf
SetColor (Rand (1,255)),(Rand(1,255)),(Rand (1,255))
ElseIf KeyDown(key_right)
x:+10
If x>789
x=789
EndIf
SetColor (Rand (1,255)),(Rand(1,255)),(Rand (1,255))
ElseIf KeyDown(key_up)
y:-10
If y<10
y=0
EndIf
SetColor (Rand (1,255)),(Rand(1,255)),(Rand (1,255))
ElseIf KeyDown(key_down)
y:+10
If y>589
y=589
EndIf
SetColor (Rand (1,255)),(Rand(1,255)),(Rand (1,255))
EndIf
DrawRect x,y,10,10
Flip
Cls
Wend
End


Wie gesagt Blitzmax und Exes hier:

http://www.feeleasy.net/uebung1.exe.zip
und für Linux
http://www.feeleasy.net/uebung1Linux.zip
http://www.feeleasy.net/uebung2.exe.zip
und für Linux
http://www.feeleasy.net/uebung2Linux.zip
Gruss
Mipooh

PS Hab mir mal ne Blitzbasic-Demo geladen. Hat ja Keiner hemacht, was gemacht werden sollte. Die einzelnen Kästchen sollten doch eine Farbe haben. Wenn da der ganze Bildschirm ständig ne neue Farbe kriegt, kann man das doch gar nicht sehen...oder hab ich das missverstanden?
P4, 3Ghz, 1GB Ram, MB Asus P4P800E, SATA und 2x IDE, Nvidia 5200, Sound USB Soundblaster, Win XP Home und Archlinux

Artemis

BeitragDi, März 29, 2005 18:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Meine Lösung für Aufgabe3:
EXE:
Code kommt morgen.
  • Zuletzt bearbeitet von Artemis am Di, Apr 04, 2006 14:47, insgesamt einmal bearbeitet

blitzmaster

BeitragDi, März 29, 2005 18:05
Antworten mit Zitat
Benutzer-Profile anzeigen
@ JonasCleve
Is cool aber du könnstest noch ne Funktion machen, dass man nicht über den Rand hinausschreiben kann Wink
***************
Blitzmaster
 

mipooh

BeitragDi, März 29, 2005 18:07
Antworten mit Zitat
Benutzer-Profile anzeigen
blitzmaster hat Folgendes geschrieben:
ich hab mir auch was einfallen lassen:
Aufgabe Nr. 3:
Die Pfeiltasten, sollten nicht berücksichtigt werden.

Bei Deinem Beispiel gehen die aber...
Gruss
Mipooh
P4, 3Ghz, 1GB Ram, MB Asus P4P800E, SATA und 2x IDE, Nvidia 5200, Sound USB Soundblaster, Win XP Home und Archlinux

blitzmaster

BeitragDi, März 29, 2005 18:22
Antworten mit Zitat
Benutzer-Profile anzeigen
okay, ich muss zugeben es is etwas schwer
aber man kann sich ja schon mal gedanken machen
***************
Blitzmaster

Waveblue

BeitragDi, März 29, 2005 18:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würd zu Aufgabe 3 noch sagen, was man für Befehle braucht, da sie nicht so geläufig sind:

Chr
Getkey


MFG Waveblue
This is 10% luck
20% skill
15% concentrated power of will
5% pleasure, 50% pain
and 100% reason to remember the name

Gehe zu Seite Zurück  1, 2, 3  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group