Person programmieren

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Deerio22

Betreff: Person programmieren

BeitragMo, Sep 22, 2008 20:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Leute,

seit kurzem versuche ich mit BlitzBasic (der ersten normalen 2D-Version"
zu programmieren. Leider kann ich jedoch nicht mehr als die Funktion
"Print"! Embarassed Aber ich möchte endlich ein Spiel programieren. Dazu will
ich erstmal eine bewegbare Figur im Spiel haben: kann von mir aus auch
nur ein Punkt oder sowas sein! Bitte helft mir!!!!

Xeres

Moderator

BeitragMo, Sep 22, 2008 20:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Was gibt es am Anfang zu beachten?
Wirf insbesondere einen Blick auf Die BB Hilfe und Tutorials.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Der Eisvogel

BeitragMo, Sep 22, 2008 21:01
Antworten mit Zitat
Benutzer-Profile anzeigen
www.robsite.de
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Smily

BeitragMo, Sep 22, 2008 22:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Sieh dir die Links an, und damit es nicht allzu trocken wird, hier eine kleine Spielerei:

Code: [AUSKLAPPEN]
Graphics 800,600
setBuffer BackBuffer()
ovx# = 400;
ovy# = 300;
repeat
  cls
    ovx = ovx + (mousex()-ovx)/5
    ovy = ovy + (mousey()-ovy)/5
    oval ovx, ovy, 5, 5
  flip
until keyhit(1)


Wenn du den Code vom Ablauf her richtig verstanden hast, hast du eigentlich den Anfang schon geschafft Wink
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
 

dgxjerry

BeitragMo, Sep 22, 2008 23:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst auch noch eine Bremse einbauen, damit die CPU-Auslastung nicht auf 100% geht. Dazu musst du am Anfang den Timer erstellen (z.B. wie hier mit 60 FPS) und dann später im Mainloop vor jedem Durchlauf warten, bis der Timer das Signal gibt.

Code: [AUSKLAPPEN]
Graphics 800,600,16,2
SetBuffer BackBuffer()
frametimer = CreateTimer(60)
ovx# = 400
ovy# = 300
repeat
  WaitTimer(frametimer)
  Cls
    ovx = ovx + (mousex()-ovx)/5
    ovy = ovy + (mousey()-ovy)/5
    oval ovx, ovy, 5, 5
  Flip
Until KeyHit(1)
I don't suffer from insanity - I enjoy every minute of it!

It's not a bug - It's a feature!
 

Anassis

BeitragDi, Sep 23, 2008 11:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Deerio22,
Ich bin selbst noch ein Anfänger, und würde auch gerne endlich mal ein Spiel machen, aber es geht einfach nicht, es happert schon an den kleinsten sachen, deswegen werde ich auchzukünftig noch mit dem buch und den Tutorials von Robsite & Co. arbeiten.

Wenn du schreibst du kannst bisher nur den Print befehl, dann nimm dies bitte nicht böse, aber dann gleich sagen ich will endlich ein Spiel programmieren und eine Bewegliche Figur zu machen, da bist du noch nicht soweit.
BB ist nunmal einfach kein Gamemaker.

Ich habe es nun selbst einmal probiert den Code meiner vorgänger auf Tastatur umzustellen und es klappt sogar:

Code: [AUSKLAPPEN]
Graphics 800,600,32,2
SetBuffer BackBuffer()

Frametimer = CreateTimer(60)

rectx = 400
recty = 300

Repeat
WaitTimer(Frametimer)
Cls

If KeyDown(205) Then rectx = rectx +5
 If KeyDown(203) Then rectx = rectx -5
 If KeyDown(200) Then recty = recty -5
 If KeyDown(208) Then recty = recty +5
Rect rectx,recty,20,20,1

Text 0,0, "rectx="+rectx
Text 0,12,"recty="+rectY

Flip

Until KeyHit(1)


Oben Links haste nun sogar ein kleinen Text der deine Spielerposition anzeigt.

Man könnte das ganze nun noch erweitern damit das der Spieler nicht aus dem Bildschirmrand rausgeht.

Gruß Lars
 

dgxjerry

BeitragDi, Sep 23, 2008 17:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Genau. So hab ich auch angefangen. Danach kannst du nach einer schönen Grafik für deinen Spieler suchen und die einbauen. Und dann hast du schon ein Grundgerüst, mit dem du einiges anstellen kannst.
I don't suffer from insanity - I enjoy every minute of it!

It's not a bug - It's a feature!
 

Anassis

BeitragMi, Sep 24, 2008 9:07
Antworten mit Zitat
Benutzer-Profile anzeigen
So ich will jetzt nicht extra ein Thema aufmachen, deswegen schreib ichs mal hierrein.


Ich habe die Steuerung nun nochmal um eine kleine sache erweitert, unzwar das das Viereck nichtmehr aus dem Bildschirm geht.
Da ist mir gleich eine sache aufgefallen, anscheinend ist der Punkt den man Steuert nur ein Pixel von dem ganzen Rect.

Weil wenn er bei 800,600 wäre würde er aus dem Bildschirm verschwinden.
Daher hab ich es nun vorher stoppen lassen, das es genau am Bildschirmrand stehen bleibt.

Ich weis nun schonmal garnicht wie ich das ändern kann, da ich nur Midhandle für ein Bild kenne und selbst dann würde er ja nur den Mittleren Punkt beachten und nicht die Wahre größe des Rect´s.

Sicherlich hätte man das aber auch geschickter lösen könne, per Kolliosion oder so, aber das versteh ich noch nicht ganz.

Code: [AUSKLAPPEN]
Graphics 800,600,32,2
SetBuffer BackBuffer()

Frametimer = CreateTimer(60)

rectx = 400
recty = 300


Repeat
WaitTimer(Frametimer)
Cls

;Steuerung

If KeyDown(205) Then rectx = rectx +5
 If KeyDown(203) Then rectx = rectx -5
 If KeyDown(200) Then recty = recty -5
 If KeyDown(208) Then recty = recty +5
Rect rectx,recty,20,20,1

;Bildschirm Stop

If rectx >780 Then rectx = 780
 If rectx <0 Then rectx = 0
 If recty >580 Then recty =580
 If recty <0 Then recty = 0


Text 0,0, "rectx="+rectx
Text 0,12, "recty="+recty


Flip

Until KeyHit(1)
End


Gruß Lars

Smily

BeitragMi, Sep 24, 2008 9:24
Antworten mit Zitat
Benutzer-Profile anzeigen
kollisionen zwichen rects kannst du mit rectsoverlap testen, aber hier wäre ist es wirklich sinnvoller mit koordinaten zu arbeiten.
ein "midhandle" für ein rect brauchst du nicht. Du kannst das rect ja einfach um eine halbe seitenlänge nach oben links versetzen Wink
Und wenn wir schonmal be idem Thema sind, kann ich ja auch nebenbei erwähnen, dass man sich angewöhnen sollte, alle werte, mit denen man arbeitet, vorher zu deklarieren und im Programm nur noch die variablen zu verwendne. Das macht kleinere änderungen leichter

Code: [AUSKLAPPEN]

width = 800
height =600
rectsize = 20
rectx = width/2
recty = height/2
rectspeed = 5

Graphics width, height,32,2
SetBuffer BackBuffer()

Frametimer = CreateTimer(60)

Repeat
   WaitTimer(Frametimer)
   Cls

  ;Steuerung

   If KeyDown(205) Then rectx = rectx + rectspeed
   If KeyDown(203) Then rectx = rectx - rectspeed
   If KeyDown(200) Then recty = recty - rectspeed
   If KeyDown(208) Then recty = recty + rectspeed
   Rect rectx-rectsize/2,recty-rectsize/2,rectsize,rectsize,1

   ;Bildschirm Stop

   If rectx > width-rectsize/2 Then rectx = width-rectsize/2
   If rectx < rectsize/2 Then rectx = rectsize/2
   If recty > height-rectsize/2 Then recty =height-rectsize/2
   If recty < rectsize/2 Then recty = rectsize/2


   Text 0,0, "rectx="+rectx
   Text 0,12, "recty="+recty


Flip

Until KeyHit(1)
End


Da 'rectsize/2' recht häufig verwendet wird, könnte man vlt sogar darüber nachdenken, auch diesen wert vorzuberechnen Wink

cu,
Smily0412
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
 

Anassis

BeitragMi, Sep 24, 2008 9:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok das stimmt, so kann man natürlich viel zeit Sparen später bei änderungen.

Vorallem rectspeed, macht es leichter da man dann nicht in allen 4 If zeilen die geschwindigkeit ändern muss.

Aber ok, für mich war es mehr oder weniger nur eine kleine Übung, da ich mit meiner Buchaufgabe die ich da hab nicht weiterkomme -.-*

Das mit den Werten deklarieren ist natürlich einfach nur Klug Laughing

Gruß Lars

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group