fallende Gegenstände (gelöst)

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Abenteurer036

Betreff: fallende Gegenstände (gelöst)

BeitragSa, Dez 20, 2008 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
ich programmiere gerade an einem Spiel wo von oben Früchte fallen sollen die man dan unten anhand einer Kiste aufsammeln kann. Leider weis ich nicht wie man etwas von oben runterfallen lasses kann! Kann mir da vielleicht jemand helfen? Ich danke schonmal im vorraus Very Happy
New Project [4%]
Schinken Maker [100%]
  • Zuletzt bearbeitet von Abenteurer036 am Mo, Sep 21, 2009 11:31, insgesamt einmal bearbeitet

tedy

BeitragSa, Dez 20, 2008 21:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Du gibst den Früchten eine Variable Y Position die du z.b bei jedem schleifendurchlauf um 1 erhöhst... So "fällt" das obst Very Happy

Abenteurer036

Betreff: Frage

BeitragSa, Dez 20, 2008 22:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Beschreibung, aber da ich noch nicht so erfahren in dem Progamm bin konnte ich damit noch nicht so viel anfangen. Vieleicht kannst du oder jemand Anders einen Script mit einem kleinen Beispiel phosten?
New Project [4%]
Schinken Maker [100%]

The_Nici

BeitragSa, Dez 20, 2008 22:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallöchen,
ich würde die Früchte mit sogenannten Types machen!
Ein Type ist eine Vorgabe für ein Objekt. Als Beispiel: Ein Löwe. Jetzt gibt es aber mehr als ein Löwe auf der Welt, also benutzen wir "Löwe" als Vorgabe für eine Art von Tier.
In BlitzBasic würde soetwas z.B. so aussehen:
Code: [AUSKLAPPEN]

Type loewe
   Field groesse#
   Field hunger%
   Field blablubb$
End Type

Ein Field ist eine Angabe zu Löwe, also eben z.B. die Grösse. Jetzt wissen wir was ein Löwe alles braucht um ein Löwe zu sein, aber wir haben immernoch keine Löwen! Also erstellen wir neue Löwen.

Code: [AUSKLAPPEN]

l.loewe = New loewe
l\groesse = 0.5
l\hunger = True
l\blablubb$ = "I like cheeseburgers!"
l2.loewe = New loewe
l2\groesse = 0.9
l2\hunger = False
l2\blablubb$ = "I'd like a beer. kthnxbai"

Dieser Code erstellt zwei Löwen (l und l2) welche mit Angaben gefüllt werden.
Beachte: Der zweite Löwe kann auch genau wie der erste heissen.

Jetzt wollen wir alle Löwen durchgehen, um irgendwas tolles mit ihnen zu machen.


Code: [AUSKLAPPEN]

For l.loewe = Each loewe   ;Geht alle Löwen durch. Der gerade aktuelle Löwe wird mit 'l' angesprochen
   l\groesse# = l\groesse# + 0.1   ;Wir lassen mal alle Löwen wachsen
   l\hunger = Not l\hunger   ;Heisst soviel wie: Wenn Hungrig, dann nicht mehr hungrig, wenn nicht hungrig, dann hungrig!
   l\blablubb$ = "Yay, ich wurde verändert. :>"
Next


Wenn du jetzt aufmerksam warst, und etwas Eigeninitiative zeigst, wirst du sicherlich an dein Ziel kommen.
MfG
Nici ;>

Abenteurer036

BeitragSa, Dez 20, 2008 22:29
Antworten mit Zitat
Benutzer-Profile anzeigen
OK Danke ich werds versuchen Very Happy
New Project [4%]
Schinken Maker [100%]

Abenteurer036

BeitragSo, Dez 21, 2008 13:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Es funktioniert immer noch nicht Sad

Ich hab hier mal den Code den ich benutzt hab:
Code: [AUSKLAPPEN]

AppTitle "Fruit Attack"
Graphics 640,480
SeedRnd MilliSecs()
SetBuffer BackBuffer()

Const BPfad$ = "....."
Const SPfad$ = "....."

Global HGrund = LoadImage (BPfad$ + "HGrund Wasser.bmp")
Global Kiste = LoadAnimImage (BPfad$ + "Kiste.bmp", 100,40, 0,2)
Global F01 = LoadImage (BPfad$ + "Fruit01.bmp")

MaskImage Kiste, 255,255,255
MaskImage F01, 255,255,255

x = 230
y = 422
Esc = 1
links = 203
rechts = 205
; -----------------------------
l.loewe = New loewe
l\groesse = 0.5
l\hunger = True
l\blablubb$ = "I like cheeseburgers!"
l2.loewe = New loewe
l2\groesse = 0.9
l2\hunger = False
l2\blablubb$ = "I'd like a beer. kthnxbai"
; -----------------------------

Type Frucht
   Field groesse#
   Field hunger%
   Field blablubb$
End Type

; und hier die Repeat schleife
Repeat
  For l.loewe = Each loewe
    l\groesse# = l\groesse# + 0.1
    l\hunger = Not l\hunger
    l\blablubb$ = "Yay, ich wurde verändert. :>"
Next
  If KeyDown(rechts) Then
    If x < 440 Then x = x + 20
    If Nr = 0 Then Nr = 1 Else Nr = 0
  ElseIf KeyDown(links) Then
    If x > 20 Then x = x - 20
    If Nr = 0 Then Nr = 1 Else Nr = 0
  Else
    Nr = 0
  EndIf
    Cls
    DrawImage HGrund, 0,0
    DrawImage Kiste, x,y, Nr
    Delay 100
  Flip
Until KeyDown(Esc)


Kann mir vielleicht einer sagen was ich falsch gemacht habe?
Ich danke schonmla im vorraus^^
New Project [4%]
Schinken Maker [100%]

ozzi789

BeitragSo, Dez 21, 2008 13:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich blick da ned ganz durch darum hab ich mal n kleines Sample dazu geschrieben
Den Rest wirst du schon hinkriegen Wink
Code: [AUSKLAPPEN]
Graphics 800,600,32,2
SetBuffer BackBuffer()

AppTitle ("Fruit Attack","Wollen sie die Früchte verfaulen lassen ? >:O")

Type fruit
   Field x
   Field y
End Type

Color 100,255,100

While Not KeyHit(1)
   
   Cls


   If KeyHit(57) ;Wenn Leertaste
      f.fruit=New fruit ;Frucht erstellen
      f\x=Rnd(1,800)
      f\y=0
   EndIf
   
   For f.fruit=Each fruit ;Jede Frucht abfragen
      f\y=f\y+2 ;Frucht "fallen" lassen
      Rect f\x,f\y,20,20,2 ; Frucht zeichnen
         If f\y>600 Then Delete f.fruit ;Wenn die Frucht nicht mehr sichtbar ist löschen
   Next
   

Flip 60
Wend
End




mfg
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

The_Nici

BeitragSo, Dez 21, 2008 14:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Entschuldigung, aber du kopierst meinen Code in deinen rein und dnekst dir einfach mal das geht?
Verstehe den Code, ich habe dir nur gezeigt wie Types funktionieren.

MfG

Abenteurer036

BeitragSo, Dez 21, 2008 15:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja das ist ziemlich komplitziert!
Ich weis z.B. nicht wozu der Punkt bei l.loewe gut ist!
Und da gibt es noch ein paar andere Sachen die ich nicht so ganz verstehe...
New Project [4%]
Schinken Maker [100%]

Thorsten

BeitragSo, Dez 21, 2008 15:06
Antworten mit Zitat
Benutzer-Profile anzeigen
The_Nici : Mehr oder weniger deine Schuld. Man gibt Anfängern die nichtmal die Programmierlogik drin haben den Begriff "Types" in die Hand, dazu ein paar Codes.

Abenteuerer : Lies Tutorials, das BB-Buch o.Ä., nach Codes allerdings zu fragen wird dich nur so weit bringen wie die Anderen hier. ..

mfG,

Thorsten

Abenteurer036

BeitragSo, Dez 21, 2008 15:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich besitze bereits ein BlitzBasic Buch: Programmieren für Kids
Aber darin steht leider nichts von Types Sad
Deshalb wollte ich mal hier im Forum nachschaun aber ich hab bis jetzt leider noch keine genaueren Beschreibungen gefunden!
New Project [4%]
Schinken Maker [100%]

ozzi789

BeitragSo, Dez 21, 2008 15:58
Antworten mit Zitat
Benutzer-Profile anzeigen
https://www.blitzforum.de/foru...ight=types
Wink
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
 

GermannX

BeitragSo, Dez 21, 2008 16:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Sonst machs halt wirklich auf die "uncoole" Tour. Für den Anfang reicht das wohl.
Z.B. so (is hässlich und dumm, aber so lernt mans meiner Meinung nach und umgeht Types):

Zitat:
Graphics 800,600,32,2
SetBuffer BackBuffer()

AppTitle ("Test")

Global Timer=CreateTimer(60)

Global ApfelX[10]
Global ApfelY[10]

While KeyDown(1)=0

Cls


If KeyHit(57) ;Wenn Leertaste
For I=0 To 10 ;Alle Früchte durchtesten
If ApfelY[I]=0 Then ;Prüfen welche Frucht noch frei ist
ApfelX[I]=Rnd(1,800) ;Frucht erstellen
ApfelY[I]=1
Exit
EndIf
Next
EndIf

For I=0 To 10
If ApfelY[I]>800 Then
ApfelY[I]=0 ;Wenn der Apfel den Boden erreicht hat, kommt er wieder nach oben
EndIf
If ApfelY[I]>0 Then
ApfelY[I]=ApfelY[I]+1 ;Apfel Fallen lassen
Rect ApfelX[I],ApfelY[I],10,10
EndIf
Next

Flip 0 WaitTimer(Timer)
Wend

End


So sind bis zu 10 Äpfel unterwegs, aber du kannst das ja beliebig hochschrauben. Ich denke der Code ist auch ohne großartige kommentierung selbsterklärend Wink

MfG
...und der Tod warf seine Sense weg und stieg auf den Mähdrescher, denn es war Krieg!

Blitzprogger

BeitragSo, Dez 21, 2008 16:37
Antworten mit Zitat
Benutzer-Profile anzeigen
sonst versuche es mit dimfeldern
beispiel:
Code: [AUSKLAPPEN]

Graphics 800,600,16,2
SetBuffer BackBuffer()

Dim fruitsx(10)
Dim fruitsy(10)

While Not KeyHit(1)

  Cls

  If KeyHit(57) Then
    fruitsx(zaehler) = Rand(0,800)
    fruitsy(zaehler) = 0
    zaehler = zaehler + 1
    If zaehler > 10 Then zaeler = 0
  EndIf

  For i = 0 To 10
    If fruitsx(i) > 0 Then Rect fruitsx(i),fruitsy(i),20,20,1
    fruitsy(i) = fruitsy(i) + 2
    If fruitsy(i) > 600 Then fruitsy(i) = 0
  Next

  Flip

Wend

End

hab den code jetzt nicht ausprobiert ob er geht Smile
wichtig ist, dass du auch versuchst ihn zu verstehen.

edit: mist, zu spät Wink

mfg
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/

Unfreiwilliger Gewinner des BAC# 115. Wink

Abenteurer036

BeitragSo, Dez 21, 2008 18:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke,
ich wede mal alle variablen ausprobieren und mir dann die besten Sachen rauspicken Very Happy
New Project [4%]
Schinken Maker [100%]

Thunder

BeitragSo, Dez 21, 2008 18:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Abenteurer036 hat Folgendes geschrieben:
Ich besitze bereits ein BlitzBasic Buch: Programmieren für Kids
Aber darin steht leider nichts von Types Sad


Meinst du das "Programmieren für Kids" von Hans-Georg Schuhmann?
Da sind Types nämlich, sogar sehr gut, beschrieben.
Ignoriere mich wenn du ein anderes "Programmieren für Kids" besitzt.
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Abenteurer036

BeitragSo, Dez 21, 2008 19:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja ich weis jetzt alles soweit aber wie mache ich das dass anstatt eines Rechtecks oder Kreises ein Bild von der Frucht nach unten fällt Question
New Project [4%]
Schinken Maker [100%]

tedy

BeitragSo, Dez 21, 2008 20:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Als erstes musst du das Bild laden

Code: [AUSKLAPPEN]
apfel=Loadimage("apfel.bmp")


und dann an die stelle des Apfels malen
Code: [AUSKLAPPEN]
Drawimage(apfel,apfelxposition,apfelyposition)
01010100 01100101 01000100 01111001 00100000 00111010 01000100

Abenteurer036

Betreff: Tile problem

BeitragSa, Sep 19, 2009 22:01
Antworten mit Zitat
Benutzer-Profile anzeigen
So, hab mich mal hingesetzt und den Code überarbeitet leider hab ich da immer noch ein paar Problemchen. Die 2 Früchte die ich gezeichnet habe werden nicht in einzelne Tiles aufgeteilt sondern bleiben ganz. Wie krig ich die auseinander? Und wie kann ich nach dem drücken der Leertaste das Obst automatisch fallen lassen Question

Danke schonmal im vorraus Very Happy

EDIT: Das mit den Tiles wurde soeben gelöst! Wink

Code: [AUSKLAPPEN]
AppTitle "Fruit Pot"
Graphics 1024,768,16,2
SetBuffer BackBuffer()

;-----------------------------------------------------------------------------------

;Player laden...

Global pot = LoadImage("img/player/pot.bmp")
MaskImage pot, 255,255,255
Global potX = 300

;Früchte laden...

Global fruits = LoadAnimImage("img/fruits/fruits.bmp", 96,32, 0,1)
MaskImage fruits, 255,255,255

;Backgrounds, Button und Icons laden...

Global menue_bg = LoadImage("img/bgs/menue_bg.bmp")
Global bg_sea_morning = LoadImage("img/bgs/bg_sea_morning.bmp")
Global ocean_quiet = LoadImage("img/bgs/ocean_quiet.bmp")

;-----------------------------------------------------------------------------------

Repeat
mission01()
Flip
Until KeyHit(1)

;-----------------------------------------------------------------------------------

Type fruit
  Field x
  Field y
End Type

;-----------------------------------------------------------------------------------

Function mission01()

  While Not KeyHit(1)

  DrawImage bg_sea_morning, 0,0
    If KeyDown(203) Then potX = potX - 3
    If KeyDown(205) Then potX = potX + 3
  DrawImage pot, potX,390
  DrawImage ocean_quiet, 0,498

    If KeyHit(57)
      f.fruit = New fruit ;neue Frucht erstellen
      fx = Rnd(1024)
      fy = 0
    EndIf

  DrawImage fruits, fx,fy

  For f.fruit = Each fruit
    fy = fy + 2 ;fallen lassen
    DrawImage fruits, 32,32
      If fy > 600 Then Delete f.fruit
    Next
    Flip 60
   Wend
End
End Function

Thunder

BeitragSo, Sep 20, 2009 7:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Zu dem auf Knopfdruck fallen lassen:

Zuerst musst du eine Globale Variable einbauen - ich nenne sie obst_faellt. Die setzt du am Anfang auf Null. Dann kannst du mit KeyHit die Leertaste abfragen. Wenn sie gedrückt wurde setzt du obst_faellt auf 1.
Dann brauchst du nur noch die Zeile

BlitzBasic: [AUSKLAPPEN]
fy = fy + 2 ;fallen lassen


in

BlitzBasic: [AUSKLAPPEN]
If obstfaellt Then fy = fy + 2 ;fallen lassen


ändern. Aja, und es wäre gut, wenn du deinen Code _RICHTIG_ einrückst.


PS: Wenn du später im Code nicht mehr willst, dass dein Obst runterfällt musst du obst_faellt wieder auf 0 setzen. Ich würde das tun, wenn kein Obst der ersten Ladung mehr da ist.
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group