Strategiespiel-Laufbefehle für eine Figur

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Surat

Betreff: Strategiespiel-Laufbefehle für eine Figur

BeitragSo, März 05, 2006 16:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Ich arbeite gerade an einem 2d-strategiespiel. Ich kann schon eine
Figur auswählen.
Dann möchte ich , dass sie dahin läuft, wo ich hinklicke!
Leider habe ich keine Ahnung, wie ich das machen könnte!

Ich bin für jede Hilfe dankbar Wink

mfg surat
"DER GRÖßTE FEIND IST IN DEN EIGENEN REIHEN" (Trygonia-Xen's Quest)

AZUON-Beyond the dark life (2%)
SOULS OF DESTINY (23%)

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, März 05, 2006 16:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Das geht mit ql:Atan2 ganz gut. Hier ein paar Beispiele:

In 3D https://www.blitzforum.de/view...athfinding

In 2D Code: [AUSKLAPPEN]
Graphics 400,400,0,2
SetBuffer BackBuffer()

mx%=0        ;Maus-X-Position
my%=0        ;Maus-Y-Position
xp#=100      ;Gegner-X-Position
yp#=100      ;Gegner-Y-Position
rw#=90       ;Gegner-Ist-Rotationswinkel
rr#=0        ;Gegner-Soll-Rotationswinkel


While Not KeyHit(1)
 mx=MouseX()
 my=MouseY()

 rr=ATan2(my-yp,mx-xp)
 rw=rw+Sgn(Sin(rr-rw))*1

 If Sqr((mx-xp)^2+(my-yp)^2)>40 Then
  xp=xp+Cos(rw)/2
  yp=yp+Sin(rw)/2
 End If

 Color 255,0,0
 Line xp,yp,xp+Cos(rw)*10,yp+Sin(rw)*10
 Color 255,255,255
 Rect mx-4,my-4,9,9,0
 Oval xp-4,yp-4,9,9,0

 Flip
 Cls
Wend
End

Surat

BeitragSo, März 05, 2006 19:03
Antworten mit Zitat
Benutzer-Profile anzeigen
joa, danke! Genau das , was ich gesucht habe! Very Happy
"DER GRÖßTE FEIND IST IN DEN EIGENEN REIHEN" (Trygonia-Xen's Quest)

AZUON-Beyond the dark life (2%)
SOULS OF DESTINY (23%)

Surat

BeitragSa, März 11, 2006 18:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Jetzt läuft die Figur zwar der Maus hinterher, aber eigentlich hatte ich ein
anderes Ziel vor Augen.

Ich wollte machen, dass man irgendwo HINKLICKT, dass die Figur dann auch dort hinläuft. Zu diesem Punkt.

Sie soll nicht ständig die Maus verfolgen.

Kann mir da jemand helfen?
"DER GRÖßTE FEIND IST IN DEN EIGENEN REIHEN" (Trygonia-Xen's Quest)

AZUON-Beyond the dark life (2%)
SOULS OF DESTINY (23%)

5k41

BeitragSa, März 11, 2006 18:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist doch genau das selbe, halt nur das du die Koordinaten mx und my durch beispielsweise pointx und pointy ersetzt und jene erst wieder den mauskoordinaten angleichst, wenn geklickt wurde!
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

WEBLink

BeitragSa, März 11, 2006 18:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
; Hallo, in diesem Skript möchte ich erklären wie man einen bestimmten Gegenstand etc. mit der
; Maus bewegen, Schalter auslösen und was bestimmtest Upgraden kann. Ich hab hier mal es auf
; einen Planeten beschränkt. Ich denke mal
; der Code ist leicht zu verstehen. Dies ist auch erst der erste Teil des fertigen Script
; da hier noch das selbständige umgehen von Hinternissen fehlt.

; Ok dann wollen wir mal anfangen


Graphics 800,600,0,1 ; Auflösung von 800*600 und Vollbild

SetBuffer BackBuffer()


; Hier werden erst mal die ganzen Bilder geladen

maus2 = LoadImage("maus2.bmp")
MaskImage maus2 ,0,255,0

punkt = LoadImage("Punkt.bmp")
MaskImage punkt ,0,255,0

punkt2 = LoadImage("Punkt2.bmp")
MaskImage punkt2 ,0,255,0

maus = LoadImage("maus.bmp")
MaskImage maus ,0,255,0

ange = LoadImage("ange.bmp")
MaskImage ange ,0,255,0

schalter = LoadImage("schalter.bmp")
MaskImage schalter ,0,255,0

schalt = LoadAnimImage("schalt.bmp",80,18,0,2)
MaskImage schalt ,0,255,0
 

birne = LoadImage("birne.bmp")
MaskImage birne ,0,255,0

birne2= LoadImage("birne2.bmp")
MaskImage birne2 ,0,255,0



birne_normal = birne
maus_normal = maus
punkt_nor = punkt

x = 20
y = 20

; birne_normal, maus_normal und punkt_nor haben einen wert bekommen
; x und y sind auf 20 gesetzt das ist die Position des Planeten






Repeat ; Anfang der Schleife


Cls



Text 1,1, "Ein normales Bewegungsskript"


mx=MouseX()
my=MouseY()

; mx und my haben nun die Koordinaten der Maus





If ImageRectOverlap (maus,mx,my,x,y,25,20) Then


   maus = maus2
Else
   maus = maus_normal

EndIf

; wenn man jetzt mit der Maus über den Planten geht verwandelt sie sich in eine Hand  : maus (Zeiger) =
; maus2 (Hand). Wenn man sich wieder von dem Planeten entfernt wird die Hand wieder in einen Zeiger
; verwandelt. maus (der den werd von maus2(Hand) hat) = Maus_normal (oben haben wir ihm den wert von maus
; gegeben, maus hatte oben nur den wert von dem normalen Zeiger. 






If MouseDown(1)

If ImageRectOverlap (maus,mx,my,x,y,25,20) Then gewaehlt = 1 ausge = 1 FlushMouse . FlushKeys

EndIf

; wenn man nun die linke Maustaste drückt wird geprüft ob man über dem Planeten ist
; wenn ja, wird
; 1. gewählt auf 1 gesetzt das ist für das bewegen
; und 2. ausge auf 1 gesetzt das für das Upgarde ist 

      









If gewaehlt = 1 Then


If KeyDown(200) Then y = y - 2 ; oben
If KeyDown(203) Then x = x - 2 ; links
If KeyDown(205) Then x = x + 2 ; rechts
If KeyDown(208) Then y = y + 2 ; unten

; Wenn man nun den Planeten angewählt hat und noch nicht mit der Maus gezogen hat kann man ihn
; mit dem Pfeiltasten bewegen.









If    MouseHit(2) And nomove = 0 Then
; wenn gewählt = 1 , rechte maustaste gedrückt und nomove = 0 ist 


 
 wegx=mx wegy=my  ; wird my und mx einen neuen Wert zugewiesen

 bewegen=1 ; und bewegen auf 1 gesetzt
 


FlushMouse ; Mausspeicher löschen
FlushKeys ; Tastenspeicher löschen

EndIf ;schleifenende




EndIf







If bewegen=1  And nomove = 0 Then ; da bewegen nun auf 1 gesetzt ist kann man den Planeten ziehen



If x > wegx Then x = x - 2  nachlinksschauen = 1 nachrechtsschauen = 0 nachobenschauen = 0 nachuntenschauen = 0  ;links
If x < wegx Then x = x + 2  nachlinksschauen = 0 nachrechtsschauen = 1 nachobenschauen = 0 nachuntenschauen = 0  ;rechts
If y > wegy Then y = y - 2  nachlinksschauen = 0 nachrechtsschauen = 0 nachobenschauen = 1 nachuntenschauen = 0  ;oben
If y < wegy Then y = y + 2  nachlinksschauen = 0 nachrechtsschauen = 0 nachobenschauen = 0 nachuntenschauen = 1  ;unten

; wegx und wegy ist ja die mausposition als man die rechte Maustaste gedrückt hat


schritte = schritte + 1

EndIf

If x=wegx And y=wegy Then  bewegen=0 
If MouseHit(1) Then bewegen=0 gewaehlt = 0 angekl = 0 ausge = 0 FlushMouse





DrawImage schalter, 435, 503
DrawImage birne, 467, 200
DrawImage punkt ,x,y


If ausge = 1 Then





DrawImage ange ,x,y


If ImageRectOverlap (maus,mx,my,x,y,25,20) Then nomove = 1 Else nomove = 0 


If MouseDown(2) Then


If ImageRectOverlap (maus,mx,my,x,y,25,20) Then   

DrawImage schalt ,x + 18 , y,0

Color 0,0,0


Text x + 5,y + 2, "   Upgrade"




If ImagesCollide (maus, mx, my,0,schalt,x+18,y,0) Then Color 255,255,255 DrawImage schalt ,x + 18, y, 1
Text x + 5,y + 2, "   Upgrade"


If MouseDown(1) Then




If update = 0 Then punkt = punkt2 update = 1



EndIf




Else

nomove = 0


EndIf
EndIf
EndIf





Color 255,255,255








If MouseDown(1) Then

If einmal = 0 Then mx2 = MouseX() my2 = MouseY()
   
   einmal = 1

      Rect mx2, my2, mx - mx2 , my - my2,0
   

         Else
 
   einmal = 0


EndIf




DrawImage maus,mx,my






If ImagesCollide (punkt, x, y,0,schalter,435,503,0) Then birne = birne2 Else birne = birne_normal





;If ImagesCollide (punkt, x, y,0,birne,467,200,0) Then block = 1 Else block = 0; für die KI 


If block = 1 Then


If nachlinksschauen = 1 Then


While nachlinksschauen = 1

y = y + 2
x=x+1
Wend

nachlinksschauen = 0


EndIf


If nachrechtsschauen = 1 Then

While nachrechtsschauen = 1

y = y + 2



Wend

nachrechtsschauen = 0

EndIf


If nachuntenschauen = 1 Then

While nachuntenschauen = 1

x = x + 2


Wend
   
EndIf



If nachobenschauen = 1 Then

While nachobenschauen = 1

x = x + 2

Wend


EndIf

EndIf









Flip

Until KeyDown(1) End


Hab ich mal vor langer zeit gemacht, mach irgendwelche Grafiken wenn dus testen willst hab derzeit kein webspace.

ist aber ohne winkelberechnung ganz simpel und einfach gemacht.

Features:

- aufrüsten von einheiuten
- aktivieren von schaltern

DC

Sieger des B2D Retro Wettbewerb / Aug 04

BeitragSa, März 11, 2006 19:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn es in deinem Spiel sowas wie Hindernisse gibt, wovon ich mal stark ausgehe, wirst du um eine Wegfindungsroutine aber nicht rumkommen.

Dazu gibt es einen schönen Artikel auf Blitz Base: http://www.blitzbase.de/artikel/path_1.htm

Du musst den Weg ermitteln und dann die Schritte in einem Type speichern. Das arbeitest du dann ab bis die Einheit am Ziel ist.
Core i5 4670K | 4 x 3,40 GHZ | 16 GB Ram | GeForce GTX 960 | HTC Vive | Win 10 Pro
www.UnrealSoftware.de | www.StrandedOnline.de | www.CS2D.com |
www.CarnageContest.com | www.Stranded3.com

Surat

BeitragSo, März 12, 2006 9:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Antworten!
"DER GRÖßTE FEIND IST IN DEN EIGENEN REIHEN" (Trygonia-Xen's Quest)

AZUON-Beyond the dark life (2%)
SOULS OF DESTINY (23%)

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group