gebäude aufnehmen und absetzen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

e1d0r

Betreff: gebäude aufnehmen und absetzen

BeitragSa, Apr 02, 2005 14:11
Antworten mit Zitat
Benutzer-Profile anzeigen
ich möchte wie z.b. bei Die Siedler oder Command & Conquer Gebäude aus einem Menü nehmen und anschließend auf eine freie Fläche setzen.

Dann soll ein Progress Balken erscheinen, der angibt, wie lange es dauert, bis das gebäude fertig gebaut ist.

Kann mir jemand sagen wie ich da Code mässig vorzugehen habe?

Vielleicht in einem kleinen Beispiel, so das ich damit von alleine weitermachen kann?

freue mich über jede hilfestellung Wink

Ofenrohr

BeitragSa, Apr 02, 2005 14:43
Antworten mit Zitat
Benutzer-Profile anzeigen
als erstes brauchst du eine art button, wenn du auf ihn klickst nimmt eine var eine zahl an, die angibt, welches geb du genommen hast. wenn du an den entsprechenden ort klickst, an den du es haben willst, wird das geb in eine liste eingetragen und diese liste wird nun abgearbeitet. in ihr steht dann auch der fortschritt, der sich mit der zeit erhöht.

das ist eine grobe erklärung wie du vorgehen musst. es ist aber nicht die einzige möglichkeit.

mfg ofenrohr
Ofenrohr.net

Ebola33

BeitragSa, Apr 02, 2005 14:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
Ich würde das folgendermaßen lösen :
1. Tileengine Programmieren.(Die Gebäude müssen ja irgendwo hin)
2. Ein 2 dimensionales Array erstellen in dem sämtliche(unterschiedliche) Gebäudetypen mit den entsprechenden Eigenschaften(Preis, Bauzeit, u.s.w) gespeichert sind.
3. Ein Baumenü gestalten mit den entsprechenden Grafiken.(übereinstimmend mit dem index des Arrays)
4. Vorm Bau des jeweiligen Gebäudes einfach prüfen ob das Geld reicht.
5. Die Gebäude selber würde ich mit Types auf die Karte setzen.(enthält dann auch eine Variable die die Bauzeit hochzählt bis zum angegebenen Wert im Array)
Die Grafik des Gebäudes allerdings direkt in Die Tileengine integrieren. D.h. im Type nur die Koordinaten, Zustand usw. speichern.
Fertig
Wink
ansteckend... Wink
verstaubtes Projekt : http://www.mitglied.lycos.de/ebola33/
 

Michi

BeitragSa, Apr 02, 2005 15:07
Antworten mit Zitat
Benutzer-Profile anzeigen
zum auswahlmenü hat ofenrohr eigentlich schon alles gesagt.
für die Gebäude nimmst du am besten Types, es sei denn, du hast vor, dass man mntw. nur 10 Gebäude bauen kann (dann kansst du ein Dim nehmen)
den balken machst du einfach, indem du den Baufortschritt als eigenschaft des Types festlegst:
BlitzBasic: [AUSKLAPPEN]

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

Type Haus
Field Handle
Field X_Pos
Field Y_Pos
Field Baufortschritt#
End Type

Global Haus_im_Bau=LoadImage(\"Haus_im_Bau.bmp\")
Global Haus_fertig=LoadImage(\"Haus_fertig.bmp\")

Repeat ;Hauptschleife

If MouseHit(1) Then ;wenn die maustaste gedrückt wird
H.Haus=New Haus ;neues Haus erstellen
H\Handle=Haus_im_Bau ;aktuelles Bild festlegen
H\X_Pos=MouseX() ;sollte klar sein...
H\Y_Pos=MouseY()
H\Baufortschritt#=0.0 ;Baufortschritt auf 0 setzen
EndIf

For H=Each Haus ;alle Häuser durchgehen
DrawImage H\Handle, H\X_Pos, H\Y_Pos ;Haus malen
If H\Baufortschrit#t<100 Then ;gucken, ob noch gebaut wird
H\Baufortschritt#=H\Baufortschritt#+0.01 ;\"bauen\"
Rect H\X_Pos-50, H\Y_Pos-25, H\Baufortschritt#, 10 ;rechteck als Bau-balken
EndIf
If H\Baufortschritt#>100 Then ;wenn es fertig ist
H\Handle=Haus_fertig ;neues Bild einstellen
EndIf
Next

Flip
Until KeyHit(1)
End

Ich hoffe da sind keoine Fehler drin
damit kannst du zwar nicht scrollen und nur ein Haus bauen, aber es ist ein Anfang.
[Edit] Jetzt hab ich so lange geschrieben, da war jemand anders schneller [/Edit]
Aber..Wozu soll er gut sein???
IBM-Ingeneur über die Idee des Mikroprozessors, 1968
Code: [AUSKLAPPEN]

   __
<_/__\_> <--- die Wayne-Zeichnung

diGGa

GruppenKaspar

BeitragSa, Apr 02, 2005 17:16
Antworten mit Zitat
Benutzer-Profile anzeigen
expecting identifier
Gestern Nacht Schlug der Regen an mein Fenster
Ich ging durch das dunkle Zimmer und
glaubte im Licht der Straßenlampe
Den Geist unseres jahrhunderts auf der
Straße zu sehen
Der uns sagte, daß wir alle am Rande
des Abgrunds stehen.
- Al Steward


Athlon 64 3000+ / Radeon 9600 / 1024mb ddram

e1d0r

BeitragSa, Apr 02, 2005 18:29
Antworten mit Zitat
Benutzer-Profile anzeigen
genau das kommt bei mir auch Confused
 

Michi

BeitragSa, Apr 02, 2005 18:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ganze war eigentlich ja auch nicht als lauffähiger Code gedacht... aber hier, bitte schön, ohne fehler und mit Mauszeiger:
BlitzBasic: [AUSKLAPPEN]
Graphics 800, 600, 16, 1
SetBuffer BackBuffer()

Type Haus
Field Handl
Field X_Pos
Field Y_Pos
Field Baufortschritt#
End Type

Global Haus_im_Bau=LoadImage(\"Haus_im_Bau.bmp\")
Global Haus_fertig=LoadImage(\"Haus_fertig.bmp\")
MaskImage Haus_im_Bau, 0, 0, 0
MaskImage Haus_fertig, 0, 0, 0

Repeat ;Hauptschleife
Cls
If MouseHit(1) Then ;wenn die maustaste gedrückt wird
H.Haus=New Haus ;neues Haus erstellen
H\Handl=Haus_im_Bau ;aktuelles Bild festlegen
H\X_Pos=MouseX() ;sollte klar sein...
H\Y_Pos=MouseY()
H\Baufortschritt#=0.0 ;Baufortschritt auf 0 setzen
EndIf

For H=Each Haus ;alle Häuser durchgehen
DrawImage H\Handl, H\X_Pos, H\Y_Pos ;Haus malen
If H\Baufortschritt#<100.0 Then ;gucken, ob noch gebaut wird
H\Baufortschritt#=H\Baufortschritt#+0.5 ;\"bauen\"
Rect H\X_Pos-10, H\Y_Pos-10, H\Baufortschritt#, 10 ;rechteck als Bau-balken
EndIf
If H\Baufortschritt#>99.9 Then ;wenn es fertig ist
H\Handl=Haus_fertig ;neues Bild einstellen
EndIf
Next

WritePixel MouseX(), MouseY(), $FFFFFFFF
WritePixel MouseX()+1, MouseY(), $FFFFFFFF
WritePixel MouseX()-1, MouseY(), $FFFFFFFF
WritePixel MouseX(), MouseY()-1, $FFFFFFFF
WritePixel MouseX(), MouseY()+1, $FFFFFFFF

Flip
Until KeyHit(1)
End


Der Fehler war, das "Handle" ja ein Befehl ist, ich hatte es allerdings als Variabel benutzt.
Aber..Wozu soll er gut sein???
IBM-Ingeneur über die Idee des Mikroprozessors, 1968
Code: [AUSKLAPPEN]

   __
<_/__\_> <--- die Wayne-Zeichnung

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group