Miniaufgaben für Noobs und Umfrage

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2, 3

Neue Antwort erstellen

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

D²O

BeitragDi, März 29, 2005 19:07
Antworten mit Zitat
Benutzer-Profile anzeigen
So, etwas spät, bin aber erst jetzt von der Maloche gekommen.

Zuerst mal mein Code von der ersten aufgabe, habe denn fehler
auch kommenmtiert der mir passiert ist.
BlitzBasic: [AUSKLAPPEN]

Graphics 800,600,16,2 ;Denn gafikmodus setzen
;800 Pixel breit, 600 hoch, 16bit Farbe, 2 = Fenstermodus
SetBuffer BackBuffer () ;Denn Backbuffer() als Aktiven Buffer setzen


Global tilex = 800/32 ;ausrechnen wie viele tiles in die Auflösung passen
Global tiley = 600/32
Global counter = 0 ;einen Counter/Zähler
Global r,g,b ;Variabel in dennen man die Farbwerte abspeichern kann

SeedRnd (MilliSecs()) ;Wenn man SeedRnd (MilliSecs()) nicht setzt ist die Zufallszahl
;nicht ganz so zufällig Wink bitte in der OH genauer ansehen
While Not KeyHit(1) ;Schleife beendet wenn ESC gedrückt wird


For y = 0 To tiley-1 ;Hier ist mein fehler entstanden, ich hatte vergessen
For x = 0 To tilex-1 ;die For schleife um 1 zu veringern
;da ja von 0 an gezählt wird Wink

r = Rand(1,255) ;Den Variablen zufallswerte zwischen 1 - 255 zuweisen
g = Rand(1,255)
b = Rand(1,255)
Color r,g,b ;Zeichen farbe setzen, RGB werte

Rect x*32,y*32,32,32,0 ;Das Quadrat immer um die eigene breite verschieben
Text x*32,y*32,counter ;genauso die text ausgabe

counter = counter + 1 ;die Zahl um 1 erhöhen


Next
Next
counter = 0 ;den counter wieder auf 0 setzen ansonsten würde er immer
;weiter zählen
Flip ; denn Backbuffer flippen, so das er jetzt als frontbuffer gilt
;und man das gezeichnete sieht
Cls ;Denn jetzt aktuellen Backbuffer löschen, damit in ihm neu
;gezeichnet werden kann
Wend ;Schleifen ende
End ;Das end ist da damit nicht immer der Hinweis kommt das das Programm
;beendet wurde


Dann eine etwas erweiterte Version von der zeiten aufgabe.

BlitzBasic: [AUSKLAPPEN]
Graphics 800,600,16,2
SetBuffer BackBuffer ()


Global tilex = 800/32
Global tiley = 600/32
Global counter = 0
Global r=255,g=255,b=255
Global links, rechts, oben,unten
Global posx,posy
Global timer, timertemp


While Not KeyHit(1)
links = KeyDown (203)
rechts = KeyDown (205)
oben = KeyDown (200)
unten = KeyDown(208)
timer = MilliSecs()

Color 255,255,255
For y = 0 To tiley-1
For x = 0 To tilex-1

;Kollision :)
If posx > x*32 And posx < (x*32) + 32 And posy > y*32 And posy < (y*32) + 32
Color r,g,b
Else
Color 255,255,255
EndIf

Rect x*32,y*32,32,32,0
Text x*32,y*32,counter
counter = counter + 1
;r = Rand(1,255) ;auskommentiert damit Augenfreundlicher wird Wink
;g = Rand(1,255)
;b = Rand(1,255)
;Color r,g,b


Next
Next
counter = 0

If links Then posx = posx - 5
If rechts Then posx = posx + 5
If oben Then posy = posy -5
If unten Then posy = posy + 5

If posx > 800-10 Then posx = 800-10
If posx < 0 Then posx = 0
If posy > 600-10 Then posy = 600-10
If posy < 0 Then posy = 0

If (timer-timertemp)> 2000
r = Rand (1,255)
g = Rand (1,255)
b = Rand (1,255)
timertemp = Timer
EndIf

Color r,g,b
Rect posx,posy,10,10,1

Flip
Cls
Wend
End


Und dann muss ich noch eins los werden,
WOWW, hab nicht gedacht das das hier so einen anglang hat, man sieht doch das einige sich noch recht schwer tun,auch bei kleineren aufgaben.

Noch für alle, macht keine so arg schweren aufgaben, es soll nur um die grundverständisse gehen wie etwas funktioniert und nicht das einer
ein monstercode erstellt Wink

Für die Noobs Wink spielt mit solchen kleinen Codes rum, Variablen ändern, schaun was pasiert....
So ist das ganze übersichtlicher.

Und noch was, man sieht hier mit denn verschieden Codes das viele Wege
nach Rom führen Smile

Von mir auch gleich noch ne Aufgabe,
auflösung wieder 800,600
Das gitter soll nun Doppelt so gross sein, nicht die Tile grösse sondern deren anzahl.

Der vorhandene Code von mir kann weiter verwendet werden.
Wenn das "Playerkästchen" Wink an den Ränder gesteuert wird soll
das gitternetz gescrollt werden, x und y Achse.
Kleiner zusatzt, wer kann, das gitter netzt darf nicht den Bildschirm verlassen.

Viel Spass Smile
Blitz+; Blitz3d; BlitzMax; GLBasic; Purebasic;
GameMaker Studio 1.4xx; AGK;
 

mipooh

BeitragDi, März 29, 2005 19:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab mal das Beispiel 1 auch in Purebasic gemacht.
21 kb im Gegensatz zu 743 kb in Blitzmax. Die Blitzbasic-Beispiele waren auch nicht kleiner. Woran liegt das?

Will einer meine Blitzmax-Lizenz kaufen?

Gruss
Mipooh
P4, 3Ghz, 1GB Ram, MB Asus P4P800E, SATA und 2x IDE, Nvidia 5200, Sound USB Soundblaster, Win XP Home und Archlinux

BladeRunner

Moderator

BeitragDi, März 29, 2005 19:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst mit framework und import die Grösse von BMax-exen massiv verkleinern.
Standardgemäß werden alle libs eingebunden, daher die Grösse.
aber auch mit BMax sind 30kb -exen möglich.

EDIT: Aus der Hilfe von BMax:
BlitzMax: [AUSKLAPPEN]
Rem
__COMMENT1__
End Rem


Framework BRL.GlMax2D

Import BRL.System

Graphics 640,480,32

While Not KeyHit(KEY_ESCAPE)
Cls
DrawText \"Minimal 2D App!\",0,0
Flip
Wend
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

Waveblue

BeitragDi, März 29, 2005 23:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab die 3.Aufgabe glaub ich so ziemlich gelöst, hab aber n fettes Problem:
Obwohl der Scancode stimmt, nimmt der bei mir die Backspacetaste nicht an!
Ich hab F1 mit derselben Funktion belegt, fall es bei euch auch nicht funzt!

http://fantasio.airmode.de/Aufgabe3.zip

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

Artemis

BeitragMi, März 30, 2005 9:54
Antworten mit Zitat
Benutzer-Profile anzeigen
hier!
mit der heißen nadel zusammen gezimmert!
http://jojo.cybton.com/input3_1.exe

Den Typ1 veröffentliche ich.
Den Typ2 nicht!!

Artemis

BeitragMi, März 30, 2005 10:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Lösung zu Aufgabe3 von Blitzmaster (Eingabe):
BlitzBasic: [AUSKLAPPEN]
Function In_put$(x_text%,y%,txt$=\"\",vorgabe$=\"\")
Local vorne$, hinten$, key%
Local blink%, cursorstat%
Local mx%, hit%
Local x = x_text + StringWidth(txt$)
Local ganz$ = vorgabe$
Local cursor% = Len(ganz$)
Color 255,255,0
Text x_text%,y%,txt$
vorne$ = Left(ganz$,cursor%)
hinten$ = Mid(ganz$,cursor%+1)
ganz$ = vorne$+hinten$
blink% = MilliSecs()
cursorstat% = 1
Repeat
If (MilliSecs() - blink) > 500 Then
cursorstat% = 1 - cursorstat%
blink = MilliSecs()
EndIf
key% = GetKey()
Color 0,0,0
Rect x%-2,y%-2,StringWidth(vorne$+\"|\"+hinten$)+6+StringWidth(\"Ü\"),FontHeight()+4,1
If (KeyHit(28)) Or (key% = 13) Then Exit
If (KeyDown(14)) Or (key% = 8) Then
If Len(vorne$) > 0 Then
vorne$ = Left(vorne$,Len(vorne$)-1)
cursor% = cursor% - 1
EndIf
EndIf
If KeyDown(211) Then
If Len(hinten$) > 0 Then
hinten$ = Right(hinten$,Len(hinten$)-1)
EndIf
EndIf
If KeyDown(203) Then
If KeyDown(42) Or KeyDown(54) Then
If markiert = 0 Then
markiercursor = cursor
markiert = 1
cursor% = cursor% - 1
Else
cursor% = cursor% - 1
EndIf
Else
markiert = 0
cursor% = cursor% - 1
EndIf
If markiercursor = cusor Then markiert = 0
If cursor% < 0 Then cursor% = 0
EndIf
If KeyDown(205) Then
If KeyDown(42) Or KeyDown(54) Then
If markiert = 0 Then
markiercursor = cursor
If cursor = 0 Then markiercursor = 0
markiert = 1
cursor% = cursor% + 1
Else
cursor% = cursor% + 1
EndIf
Else
markiert = 0
cursor% = cursor% + 1
EndIf
If markiercursor = cusor Then markiert = 0
If cursor% > Len(ganz$) Then cursor% = Len(ganz$)
EndIf
If KeyDown(199) Then cursor% = 0
If KeyDown(207) Then cursor% = Len(vorne$+hinten$)
If KeyHit(210) Then einfuegen = 1 - einfuegen
If (key% >= 32) And (key% <= 255) Then
If einfuegen = 1 Then hinten$ = Right(hinten$,Len(hinten$)-1)
vorne$ = vorne$ + Chr(key%)
cursor% = cursor% + 1
markiert = 0
EndIf
ganz$ = vorne$+hinten$
vorne$ = Left(ganz$,cursor%)
hinten$ = Mid(ganz$,cursor%+1)
Color 255,255,0
Text x%,y%,vorne$+\"|\"+hinten$
If markiert = 1 Then
If cursor > markiercursor Then
markierung$ = Right(vorne$,cursor-markiercursor)
Color 255,255,255
Rect x+StringWidth(Left(vorne,markiercursor)),y,StringWidth(markierung),FontHeight()
Color 0,0,255
Text x+StringWidth(Left(vorne,markiercursor)),y,markierung
EndIf
If cursor < markiercursor Then
markierung$ = Left(hinten$,markiercursor-cursor)
Color 255,255,255
Rect x+StringWidth(vorne+\"|\"),y,StringWidth(markierung),FontHeight()
Color 0,0,255
Text x+StringWidth(vorne+\"|\"),y,markierung
EndIf
EndIf
If markiert = 0 Then markierung$ = \"\"
Color 255,0,0
Rect x%-2,y%-2,StringWidth(vorne$+\"|\"+hinten$)+4,FontHeight()+4,0
If einfuegen = 1 Then Text x%+StringWidth(vorne$+\"|\"+hinten$)+4,y%,\"Ü\"
Select cursorstat%
Case 0 Color 0,0,0
Case 1 Color 255,0,0
End Select
Text x%+StringWidth(vorne$),y%,\"|\"
Delay 40
Flip
Forever
Color 0,0,0
Rect x%-2,y%-2,StringWidth(vorne$+\"|\"+hinten$)+6+StringWidth(\"Ü\"),FontHeight()+4,1
Color 255,255,0
Text x%,y%,vorne$+hinten$
Flip
Return ganz$
End Function

Graphics 640,480,32,2
SetFont LoadFont(\"Comic Sans MS\",20)
Text 10,10,\"Es beinhaltet:\"
Text 10,30,\"- cursor (blinkend) \"
Text 10,50,\"- cursortasten zum bewegen \"
Text 10,70,\"- entfernen( das hinter dem cursor löschen) \"
Text 10,90,\"- einfg (überschreiben) \"
Text 10,110,\"- backspace ( das vor dem cursor löschen) \"
Text 10,130,\"- mit shift+cursortaste kann man markieren\"
Text 10, 150,\"(sont aba noch nix kein alles entf oder copy oder paste)\"
name$ = In_put$(10,250,\"Gib deinen Namen ein: \",\"BlitzForum-User\")
Color 0,255,0
Text 10,325,\"Hallo \"+name$+\"!\"
Text 10,350,\"Dies ist eine Input-Routine, geschrieben von Jonas Cleve\"
Color 255,0,0
Text 10,380,Chr(169)+\"2005 by Jonas Cleve\"
Flip
FlushKeys
WaitKey
End


Vielleicht kommentier ich das noch!
 

Bigfreddy

BeitragMi, März 30, 2005 10:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hätte noch ne Aufgabe:

Aufgabe 5:

Viele haben Rob's Tut gelesen, da kam ein kleiner Soldat vor:

user posted image

Die Aufgabe ist nun, diesen Soldaten zu animieren, dass es so aussieht:

user posted image

Wer Rob's Tut nochmal oder zum erstenmal lesen will, findet die Lektion hier:
Rob's Tur - Lektion 8 - Bilder anzeigen
Dort findet man auch die Befehle, die man braucht.

Viel Spass!
 

Bigfreddy

BeitragSa, Apr 02, 2005 22:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Überhaupt keine Reaktionen auf die Aufgabe/n ???
Naja, was solls...

Spikespine

BeitragMi, Apr 13, 2005 16:20
Antworten mit Zitat
Benutzer-Profile anzeigen
So, ich push das jetztmal.

Schreibe ein Programm, das einen Getränkeautomaten darstellt. Ziel ist die Wechselgeldfunktion. Der Automat soll möglichst wenige Münzen zurückgeben, aber natürlich den richtigen Betrag^^
Grafik wird natürlich nicht benötigt.
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax

eternitysoft

BeitragDo, Apr 14, 2005 0:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Zu Aufgabe 5

ist zwar nicht gerade gut der code (<.<) aber es geht

BlitzBasic: [AUSKLAPPEN]

Graphics 800,600,32,2
Global chara ,frame
chara = LoadAnimImage(\"trooprunner.png\", 48, 56, 0, 12)
MaskImage chara, 126, 26, 100


Timer=CreateTimer(10)


Function chara()

If frame=11 Then
frame=0
Else
frame=frame+1
EndIf

DrawImage chara, 222, 222, frame

End Function



While(KeyHit(1) = False)


SetBuffer(BackBuffer())
WaitTimer (Timer)
ClsColor(0, 0, 0)
Cls()

chara()

Flip(True)
Wend


hier das pic
user posted image

Alfadur

BeitragDo, Apr 14, 2005 0:21
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]

Function wechselgeld(betrag,muenze)
Return betrag/muenze
End Function

Dim muenzen(7)
muenzen(0)=200
muenzen(1)=100
muenzen(2)=50
muenzen(3)=20
muenzen(4)=10
muenzen(5)=5
muenzen(6)=2
muenzen(7)=1

Dim muenzenstring$(7)
muenzenstring$(0)=\"2 Euro\"
muenzenstring$(1)=\"1 Euro\"
muenzenstring$(2)=\"50 Cent\"
muenzenstring$(3)=\"20 Cent\"
muenzenstring$(4)=\"10 Cent\"
muenzenstring$(5)=\"5 Cent\"
muenzenstring$(6)=\"2 Cent\"
muenzenstring$(7)=\"1 Cent\"


ebetrag#=Input(\"Welchen Betrag wechseln?\")
betrag=Int(ebetrag#*100)

For i=0 To 7
wechsel=wechselgeld(betrag,muenzen(i))
If wechsel>0 Then Print wechsel+\" x \"+muenzenstring(i)
betrag=betrag-wechsel*muenzen(i)
Next

WaitKey()
End
[/syntax]
A Cray is the only computer that runs an endless loop in less than four hours.

Gehe zu Seite Zurück  1, 2, 3

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group