types??? *neue Frage*
Übersicht

SchoaschBetreff: types??? *neue Frage* |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi ![]() Also ich kenn mich mit Types so gut wie nicht aus. Ich hab paar tuts durchgelesen und chek gleich 0. Hab nur verstanden das man da eben was definieren kann z.B. Telefonnummer und Adresse blablabla... Jetzt weis ich aba net was sich das bringt. Wenn ich zum Beispiel ne Variable mit Telefonnummer brauch dann mach ich Telefonnummer = blablabla Das is sowas von kompliziert... ![]() sry das ich das mit den Types nicht chek aber plz helft mir weiter ![]() Danke schon mal im Vorraus Schoasch |
||
- Zuletzt bearbeitet von Schoasch am Sa, Apr 14, 2007 8:08, insgesamt einmal bearbeitet
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da die die Tutorials anscheinend nicht zusprechen, so gebe ich dir mal ein kleinen Beispielcode. Ich lerne mit sowas am besten. Code: [AUSKLAPPEN] Graphics3D 400,400,0,2
SetBuffer BackBuffer() Type flare Field xp# Field yp# Field xg# Field yg# Field at% Field fa% End Type xp#=0 yp#=0 xg#=0 yg#=0 While Not KeyHit(1) xp=MouseX() yp=MouseY() xg=MouseXSpeed() yg=MouseYSpeed() xg=xg/120 yg=yg/120 If MouseDown(1) Then fla.flare=New flare fla\fa=Rand(0,255) fla\xp=xp fla\yp=yp fla\xg=xg+Rnd(-.02,.02) fla\yg=yg+Rnd(-.02,.02) End If For fla.flare=Each flare fla\xp=fla\xp+fla\xg*td fla\yp=fla\yp+fla\yg*td If fla\xp>400 Or fla\xp<0 Then fla\xg=-fla\xg If fla\yp>400 Or fla\yp<0 Then fla\yg=-fla\yg fla\at=fla\at+1 Color 255,fla\fa,255-fla\fa Rect fla\xp-2,fla\yp-2,5,5,1 If fla\at>1000 Then Delete fla Next td=MilliSecs()-tp tp=MilliSecs() Flip Cls Wend End |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Im Prinzip funktionieren Types wie ein Karteikasten.
Also alle durchgehen und einzelne löschen oder einfügen, usw |
||
[BB2D | BB3D | BB+]
|
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
ist gut gemeinst hectic, aber ich glaube nicht, dass er das verstehen wird...
(Vielleicht n paar komentare dazu ...) Ich probiere mal mein glück: Ok types, was sind types überhaupt ? und was machen die ? Mit types kann man Gegenstände/Objekte mit verschiedenen Eigenschaften verwalten. So wie Kateikärtchen... Mit ihnen ist es möglich rießige Soldaten Heere oder tausende Sterne zu bewegen. Und jedes dieser einzelnen Objekte hat seine eigenen Eingenschaften und kann unabhängig von den anderen agieren. So wie bei Schnee z.B. Keine Schneeflocke ist wie die andere... Sie haben verschiedene Größen,Geschwindigkeiten,Flugbahnen, Farben und selbst verständlich andere Positionen. Ok aber wie setzte ich das jetzt um ?? (Schneeflocken beispiel) Also zuerst müssen wir einmal sagen was wir überhaupt wollen--> einen Schnee type indem wir dann unsere Eigenschaften Speichern. Also: Code: [AUSKLAPPEN] type Schnee field schnee_x field schnee_y field Schnee_größe field schnee_geschwindgkeit field schnee_farbe end type Ok jetzt haben wir die Eigenschaften des Schnees festgelegt. Nun müssen wir Gott spielen und eine Schneeflocke auf dem Bildschirm erstellen. Nachdem wir aber immerwieder neue Flocken haben wollen machen wir das ganze in einer Schleife: Code: [AUSKLAPPEN] repeat cls info.schnee = new Schnee ;flocke erstellen (info = weil es a type ist) info\schnee_x = rnd(0,800) ;zufällige schnee posi info\schnee_y = -20 ;irgendwo überhalb des bildschirms info\große ..... usw So jetzt haben wir schnee "erstellt" und ihm Start posis zugewiesen. Doch jetzt fragt sich der Pc was soll ich bitte damit machen? Also sagen wir es ihm ---> lasse JEDEN Schnee nach unten fallen Code: [AUSKLAPPEN] for info.schnee = each schnee info\schnee_y = info\schnee_y +10 ;(oder +info\schnee_speed) ;sollte der schnee den unteren Bildschirmrand erreichen lösche diesen if info\schnee_y >= 600 then delete info.schnee rect info\schnee_x,info\schnee_y,info\schnee_größe,info\schnee_größe next flip until keyhit(1) ;ende der hauptschleife Das ist die absolut vereinfachte version. Wenn man das jetzt aber so stehen lässt, ist das doof weil bb die Schneeflocken ohne Zeitliche abstände erstellt. Also müsste man für "schnee feeling" einen counter einbauen und das bevor man die flocke erstellt: Code: [AUSKLAPPEN] ;zähler einbauen warte_zähler = warte_zähler +1 if warte_zähler >= 10 then warte_zähler = 0 ;damit es wieder von vorne losgeht info.schnee = new Schnee ;schnee erstellen(wie oben) Funktionstüchtig sieht das dan so aus : Code: [AUSKLAPPEN] Graphics 800,600,16,2 SetBuffer BackBuffer() Type Schnee Field schnee_x Field schnee_y Field Schnee_grose Field schnee_geschwindgkeit End Type Repeat Cls warte_zahler = warte_zahler +1 If warte_zahler >=10 Then warte_zahler = 0 info.schnee = New Schnee info\schnee_x = Rnd(0,800) info\schnee_y = -20 info\schnee_grose = Rnd(2,3) info\schnee_geschwindgkeit = Rnd(3,5) End If For info.schnee = Each schnee info\schnee_y = info\schnee_y + info\schnee_geschwindgkeit Rect info\schnee_x, info\schnee_y,info\schnee_grose,info\schnee_grose If info\schnee_y >= 601 Then Delete info.schnee Next Flip Until KeyHit(1) |
||
- Zuletzt bearbeitet von Dottakopf am Mi, Apr 11, 2007 22:02, insgesamt 9-mal bearbeitet
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mal davon abgesehen, dass du gleich zwei verschiedene Types benutzt, obwohl du nur von einem sprichst(und auch nur einen meinst), was an sich schon schlimm genug ist, finde ich deine Erklärung sehr verwirrend.
Selbst helfen kann ich leider auch nicht. Ich war noch nie gut im Erklären und Tipps geben kann ich hierzu nicht, da ich selbst nicht mehr weiß wie ich es gelernt hab... ich konnte es einfach ![]() |
||
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans! Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
ach du heilige maria ! Gott ist das Peinlich !
Jup in erklären bin ich auch kein reißer ^^ mal schauen vielleicht kann ich des noch irgendwie hin editieren ... P.S. hectic dein progi find ich total lustig... meine schwester dreht grad voll am radel ^^ Ok mal schauen was sich retten lässt ![]() |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
darki |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also types fand ich auch immer schwierig bis ich sie verstanden habe. Nun finde ich sie total cool. Also gelernt habe ic sie am besten mit diesem tutorial:http://www.robsite.de/daten/tutorials/bb_type_tut.pdf
Danach etwas experimentiert und gefragt und schon ging es. Wenn du dieses tutorial schon gelesen hast denn entschuldige ich mich und bitte die adims diesen beitrag zu löschen. Mfg darki |
||
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also types waren für mich auch eine der schwierigsten dinge, als ich mit bb angefangen habe.
Ich hab es mir dann am ende mehr oder weniger selbst beigebracht, indem ich mir einfach ein paar Beispiele angesehen habe, wo types verwendet wurden. Auf der CD zum Buch "Spiele Programmieren mit Blitz Basic" von Rene sind ne menge Beispielcodes, durch die habe ich Types im großen und ganzen verstanden. Leider hab ich die CD atm nicht hier und kann die Codes deswegen nicht hochladen ^^ vlt erklärt sich ja jemand anderes berreit, dies zu tun. Edit: ein ganz Primitiver Code, wo types verwendet werden. Vielleicht hilfts dir ja: Code: [AUSKLAPPEN] Type star
Field x Field y End Type Graphics 800,600,16,2 Repeat If MouseHit(1) star.star = New star star\x = MouseX() star\y = MouseY() End If Cls For star.star = Each star Plot star\x, star\y Next Flip Until KeyHit(1) |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
![]() |
garret |
![]() Antworten mit Zitat ![]() |
---|---|---|
Alternativ kannst du dir auch meinen alten Senf angucken:
https://www.blitzforum.de/foru...ght=garret Laut AFRO scheint mir das damals ganz verständlich gelungen zu sein. MfG garret |
||
>>nec aspera terrent<< (Auch Widerwärtigkeiten schrecken nicht) |
SchoaschBetreff: thx!! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke an alle ![]() ![]() Ich kenn mich jetzt mit Types aus!! (oder eben mit dem was ich wissen muss xD) Danke noch mal an alle die mir geholfen haben!! Schoasch ![]() |
||
SchoaschBetreff: noch ne frage xD |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok also ich würde jetzt gerne prüfen ob eine meiner Regentropfen mit einem Rechteck collidiert ich hab das jetzt mal so gemacht :
If RectsOverlap(ax,ay,65,40,lala\x,lala\y,0.6,lala\Laenge) Then Text 0,0, "collision" die regentropfen bestehen aus länglichen Rechtecken also sollte das gehen ![]() ![]() plz helft mir danke schon mal im Vorraus: Schoasch |
||
darki |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es wäre hilfreich wenn du den ganzen code postest. Gibt BB dir eine fehlermeldung? Oder passiert im programm einfach nichts?
mfg darki |
||
SchoaschBetreff: der code |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
er gibt ne fehlermeldung: object does not exsist
also mal der code: Code: [AUSKLAPPEN] Graphics 800,600,16,2 SetBuffer BackBuffer() Type Regen Field x Field y Field Geschwindigkeit Field Laenge End Type Color 0,0,255 ClsColor 0,0,25 ax = 0 ay = 537 Repeat Cls wartezaehler = wartezaehler + 1 If wartezaehler >= 10 Then wartezaehler = 0 lala.Regen = New Regen lala\x = Rnd(0,800) lala\y = -20 lala\Geschwindigkeit = Rnd(9,13) lala\Laenge = Rnd(15,20) EndIf For lala.Regen = Each Regen lala\y = lala\y + lala\Geschwindigkeit Rect lala\x,lala\y,0.6,lala\Laenge If lala\y >= 601 Then Delete lala.Regen Next Rect ax,ay,65,40 If RectsOverlap(ax,ay,65,40,lala\x,lala\y,0.6,lala\Laenge) Then Text 0,0, "collide" Flip Until KeyHit(1) und plz sagt nicht das ich für die x,y position für das rechteck nen type nehmen sollte ... xD |
||
darki |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Tut mir leid ich finde nichts ![]() |
||
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
kann es vielleicht sein, dass es an dem 0.6 liegt?
ein Pixel hat im Normalfall eine breite von 1 und nicht 0.6 oder sonstiges. |
||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
SchoaschBetreff: :( |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
nein leider ![]() ![]() |
||
![]() |
ShadowJumper |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich vermute es liegt an deinem Zähler
durch den wird am anfang noch kein regentropfen erstellt es kann keine Kollision überprüft werden fehler ich weiß es aber net genau und habs net getestet du könntest das ENDIF für den Zähler hinter die Kollisionsprüfung setzen oder eine Repeat...Until Schleife (anstatt der Bedingun) nehmen einfach da ma n bissl probieren (wie schon gesagt, ich bin mir nicht sicher) |
||
![]() |
Thorsten |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hm, wollt ihr mich verarschen?
Das liegt doch gar nicht in der erforderlichen Schleife. Solltet euch wohl mal eine Pause gönnen oO Code: [AUSKLAPPEN] Graphics 800,600,16,2 SetBuffer BackBuffer() Type Regen Field x Field y Field Geschwindigkeit Field Laenge End Type Color 0,0,255 ClsColor 0,0,25 ax = 0 ay = 537 Repeat Cls wartezaehler = wartezaehler + 1 If wartezaehler >= 10 Then wartezaehler = 0 lala.Regen = New Regen lala\x = Rnd(0,800) lala\y = -20 lala\Geschwindigkeit = Rnd(9,13) lala\Laenge = Rnd(15,20) EndIf For lala.Regen = Each Regen lala\y = lala\y + lala\Geschwindigkeit Rect lala\x,lala\y,0.6,lala\Laenge ;dieser Abschnitt hier If RectsOverlap(ax,ay,65,40,lala\x,lala\y,0.6,lala\Laenge) Then Text 0,0, "collide" ;------------------------- If lala\y >= 601 Then Delete lala.Regen Next Rect ax,ay,65,40 Flip Until KeyHit(1) mfG, Thorsten |
||
![]() |
garret |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du begehst einen im Umgang mit Types häufigen Fehler.
Hier gehst du die einzelnen Einträge durch und löschst die nicht mehr benötigten. Soweit richtig. Code: [AUSKLAPPEN] For lala.Regen = Each Regen lala\y = lala\y + lala\Geschwindigkeit Rect lala\x,lala\y,0.6,lala\Laenge If lala\y >= 601 Then Delete lala.Regen Eine Zeile weiter willst du jedoch auf den nicht mehr vorhandenen Eintrag zugreifen: Code: [AUSKLAPPEN] If RectsOverlap(ax,ay,65,40,lala\x,lala\y,0.6,lala\Laenge) Then Text 0,0,"collide" Die Fehlermeldung kommt also daher, dass du auf ein nicht mehr vorhandenes (da mit Delete gelöschtes) Objekt zugreifen willst. Lösung? Den Codeteil, der den Eintrag löscht, an's Ende der For-Each-Schleife setzen oder überprüfen, ob die einzelnen Einträge vorhanden sind: Code: [AUSKLAPPEN] ; Variante A For lala.Regen = Each Regen lala\y = lala\y + lala\Geschwindigkeit Rect lala\x,lala\y,0.6,lala\Laenge If RectsOverlap(ax,ay,65,40,lala\x,lala\y,0.6,lala\Laenge) Then Text 0,0,"collide" If lala\y >= 601 Then Delete lala.Regen Next ; Variante B For lala.Regen = Each Regen lala\y = lala\y + lala\Geschwindigkeit Rect lala\x,lala\y,0.6,lala\Laenge If lala\y >= 601 Then Delete lala.Regen If lala<>Null If RectsOverlap(ax,ay,65,40,lala\x,lala\y,0.6,lala\Laenge) Then Text 0,0,"collide" EndIf Next Ich bevorzuge A, da man dann nicht extra eine Abfrage machen muss. Wenn ein Type-Eintrag nicht mehr benötigt wird, wird er am Ende der For-Each-Schleife gelöscht. @BlindGuy: 1. Dich würde doch niemand "verarschen". 2. Eine Erklärung deiner "Lösung" wäre nicht schlecht! @Schoasch: Allerdings hilft auch hier die Foren-Suche. Der Fehler ist wie gesagt sehr häufig: https://www.blitzforum.de/foru...esnt+exist MfG garret |
||
![]() |
Thorsten |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mh die Lösung war aber so simpel, und ein ziemlich erfahrener User (Skey-Z) hat auf etwas Unerhebliches hingewiesen.
Danach kommt ein zweiter User, der auf etwas noch unerheblicheres hinweist. Da kommt so die Idee, jemand verteilt hier gratis Drogen ... Thorsten |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group