Kartenspiel(z.b. "Magic The Gathering")

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2, 3, 4  Weiter

Neue Antwort erstellen

Blitzer

Betreff: Kartenspiel(z.b. "Magic The Gathering")

BeitragFr, März 05, 2004 19:16
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe es derzeit so geschrieben:
Code: [AUSKLAPPEN]
Graphics 1024,768,32,1
Global a=0
Global b=0
Global RedDragon=LoadImage("D:\Karten\RedDragon.bmp")
Global IceDragon=LoadImage("D:\Karten\IceDragon.bmp")
Global BlackDragon=LoadImage("D:\Karten\BlackDragon.bmp")
Global StoneDragon1=LoadImage("D:\Karten\StoneDragon1.bmp")
Global StoneDragon2=LoadImage("D:\Karten\StoneDragon2.bmp")
Global StoneDragon3=LoadImage("D:\Karten\StoneDragon3.bmp")
Global StoneDragon4=LoadImage("D:\Karten\StoneDragon4.bmp")
Global HinterKarte=LoadImage("D:\Karten\HinterKarte.bmp")
Global KarteFont=LoadFont("Palatino Linotype",18,0,1,0)
MaskImage RedDragon,250,250,250
MaskImage IceDragon,250,250,250
MaskImage BlackDragon,250,250,250
MaskImage StoneDragon1,250,250,250
MaskImage StoneDragon2,250,250,250
MaskImage StoneDragon3,250,250,250
MaskImage StoneDragon4,250,250,250
MaskImage HinterKarte,250,250,250
Type Karte
   Field X
   Field Y
   Field Kraft
   Field Abwehr
   Field Nummer
   Field Ein
End Type
For i=1 To 3
   Karten.Karte=New Karte
   ;RedDragon;
   If i=1
      Karten.Karte\Kraft=2500
      Karten.Karte\Abwehr=2000
   EndIf
   ;IceDragon;
   If i=2
      Karten.Karte\Kraft=2000
      Karten.Karte\Abwehr=2500
   EndIf
   ;BlackDragon;
   If i=3
      Karten.Karte\Kraft=3000
      Karten.Karte\Abwehr=0
   EndIf
Next
Function Kart(Karten.Karte)
   Karten.Karte\Ein=1
End Function
Function Zeichnen(Karten.Karte)
   If a=1
                                color 255,0,0
      rect 0,0,120,160 ;RedDragon;
   EndIf
   If a=2
                                color 0,255,0
      rect 0,0,120,160 ;IceDragon;
   EndIf
   If a=3
                                color 0,0,255
      rect 0,0,120,160 ;BlackDragon;
   EndIf
End Function
Function Schreiben(Karten.Karte)
   Color 0,0,0
   SetFont KarteFont
   For Karten.Karte=Each Karte
      b=b-1
      If b=0
      EndIf
   Next
End Function
Function Schreiben2(Karten.Karte)
   Text Karten.Karte\X+32,Karten.Karte\Y+96,Karten.Karte\Kraft,1,1
   Text Karten.Karte\X+89,Karten.Karte\Y+96,Karten.Karte\Abwehr,1,1
End Function
Function Ziehen()
   a=Rand(1,3)
   b=a
End Function
ClsColor 188,0,111
SetBuffer BackBuffer()
While Not KeyHit(57)
   Ziehen()
   While Not KeyDown(1)
      Cls
      Kart(Karten.Karte)
      Zeichnen(Karten.Karte)
      Schreiben(Karten.karte)
      Schreiben2(Karten.Karte)
      Flip
   Wend
Wend

wenn ich jetzt "Run Program" Drücke dann sehe ich den Ice Dragon mit stärke 3000/0. Ich weiss den fehler, aber ich weiss nicht wie ich es machen soll.
Nichts ist mehr so wie es einmal war mit
------------------Blitzbasic------------------

Athlon 3000+, 1 GBRam DDR, Geforce FX 5500, 120 GB Fesplatte
Sempron 2200+, 512 MBRam DDR, Geforce FX 5200, 60 GB Festplatte
  • Zuletzt bearbeitet von Blitzer am Sa, März 06, 2004 8:57, insgesamt 2-mal bearbeitet
 

walski

Ehemaliger Admin

BeitragFr, März 05, 2004 20:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Wen du den Fehler kennst, dann wärs vielleicht ein wenig hilfreich, wenn du ihn uns auch mitteilen würdest!

walski
buh!

Blitzer

Betreff: JO!

BeitragFr, März 05, 2004 20:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Arrow Arrow Code: [AUSKLAPPEN]
Function Schreiben(Karten.Karte)
   Color 0,0,0
   SetFont KarteFont
   For Karten.Karte=Each Karte
      b=b-1
      If b=0
      EndIf
   Next
End Function
Nichts ist mehr so wie es einmal war mit
------------------Blitzbasic------------------

Athlon 3000+, 1 GBRam DDR, Geforce FX 5500, 120 GB Fesplatte
Sempron 2200+, 512 MBRam DDR, Geforce FX 5200, 60 GB Festplatte
 

walski

Ehemaliger Admin

BeitragFr, März 05, 2004 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Toller Fehler... für mich sieht das eher nach nem Stück Code aus, aber wenn du meinst... Rolling Eyes

walski
buh!

regaa

Betreff: Re: JO!

BeitragFr, März 05, 2004 20:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Was soll den
Blitzer hat Folgendes geschrieben:
Arrow Arrow Code: [AUSKLAPPEN]

      If b=0
      EndIf


bedeuten?
 

walski

Ehemaliger Admin

BeitragFr, März 05, 2004 20:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist kein syntaktischer Fehler!
Es ist zwar verdammt sinnlos, aber vielleicht sollte da ja nochma was rein Smile

walski
buh!

regaa

BeitragFr, März 05, 2004 21:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey, ich habs Idea , vielleicht will er uns damit deutlich machen wo der Fehler liegt.
 

walski

Ehemaliger Admin

BeitragFr, März 05, 2004 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
*kopfschüttel*
Nein echt... wow! Welch erkenntnis!
Nur habe ich keine Lust, ohne den kompletten Code und/ohne Medien irgendwas zu testen! Soll er doch wenigstens die Fehlermeldung posten...

walski
buh!

Blitzer

Betreff: JO!

BeitragFr, März 05, 2004 21:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Durch function Ziehen() stellt er eine Zahl fest z.b. 2 und er soll es dann so machen das er dann die Karte zeigt und das er die Kraft und die Abwehr laden und schreiben soll und deswegen weis ich nicht wie ich es mache das er den richtigen Kraft und Abwehr schreibt.
Shocked Shocked
Nichts ist mehr so wie es einmal war mit
------------------Blitzbasic------------------

Athlon 3000+, 1 GBRam DDR, Geforce FX 5500, 120 GB Fesplatte
Sempron 2200+, 512 MBRam DDR, Geforce FX 5200, 60 GB Festplatte
 

walski

Ehemaliger Admin

BeitragFr, März 05, 2004 21:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich gebs auf.

walski
buh!

regaa

BeitragFr, März 05, 2004 21:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Prinzip heißt auch Hier: "Teile und Herrsche", d.h. teile alle kleinen Probleme in noch keleinere auf, und versuch sie erst dann zu lösen, so ohne weiteres

Zitat:

Durch function Ziehen() stellt er eine Zahl fest z.b. 2 und er soll es dann so machen das er dann die Karte zeigt und das er die Kraft und die Abwehr laden und schreiben soll und deswegen weis ich nicht wie ich es mache das er den richtigen Kraft und Abwehr schreibt.


geht das nid.

soli

BeitragSa, März 06, 2004 7:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube er möchte einfach seine Karten auf den Bildschirm gelegt bekommen, und darunter die Werte anzeigen.

mit
if b=0 : endif
versucht er wohl die For each Schleife unnötigerweise abzubrechen.

Und wenn ich es nur annähernd verstanden habe,
sollte er Karte\Abwehr erstmal einen Wert übergeben.
Und dann die Function Schreiben2() und Zeichnen() aus der Function Schreiben() heraus aufrufen.

Aber Nichts genaues weiss man nicht.

Und Blitzer wenn du noch weiter Hilfe brauchst, dann stelle
Codes ins Forum die man auch austesten kann.
Ersetze erstmal die Grafiken durch rects

soli
solitaire

Blitzer

Betreff: OK!

BeitragSa, März 06, 2004 8:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, so meinte ich das.
PS:OK, Mit den Rechtecken mache ich.
Nichts ist mehr so wie es einmal war mit
------------------Blitzbasic------------------

Athlon 3000+, 1 GBRam DDR, Geforce FX 5500, 120 GB Fesplatte
Sempron 2200+, 512 MBRam DDR, Geforce FX 5200, 60 GB Festplatte

Ctuchik

BeitragSa, März 06, 2004 14:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab das mal neu geschrieben!
Test mal obs richtig funktioniert!

mfG Ctuchik

Code: [AUSKLAPPEN]

Graphics 1024,768,0,1

SetBuffer BackBuffer()

Const RED_DRAGON = 1
Const ICE_DRAGON = 2
Const BLACK_DRAGON = 3
Const STONE_DRAGON1 = 4
Const STONE_DRAGON2 = 5
Const STONE_DRAGON3 = 6
Const STONE_DRAGON4 = 7
Const MIN = 1
Const MAX = 7
Const KRAFT = 0
Const ABWEHR = 1

;################# INFOS ÜBER DIE KARTEN ################

;Namen
Dim KartenNamen$(20)
KartenNamen$(RED_DRAGON) = "Red Dragon"
KartenNamen$(ICE_DRAGON) = "Ice Dragon"
KartenNamen$(BLACK_DRAGON) = "Black Dragon"
KartenNamen$(STONE_DRAGON1) = "Stone Dragon 1"
KartenNamen$(STONE_DRAGON2) = "Stone Dragon 2"
KartenNamen$(STONE_DRAGON3) = "Stone Dragon 3"
KartenNamen$(STONE_DRAGON4) = "Stone Dragon 4"

;Kraft und Abwehr
Dim Attribute(20,2)
Attribute(RED_DRAGON,KRAFT) = 2500
Attribute(RED_DRAGON,ABWEHR) = 2000
Attribute(ICE_DRAGON,KRAFT) = 2000
Attribute(ICE_DRAGON,ABWEHR) = 2500
Attribute(BLACK_DRAGON,KRAFT) = 3000
Attribute(BLACK_DRAGON,ABWEHR) = 0
Attribute(STONE_DRAGON1,KRAFT) = 12
Attribute(STONE_DRAGON1,ABWEHR) = 11
Attribute(STONE_DRAGON2,KRAFT) = 10
Attribute(STONE_DRAGON2,ABWEHR) = 9
Attribute(STONE_DRAGON3,KRAFT) = 8
Attribute(STONE_DRAGON3,ABWEHR) = 7
Attribute(STONE_DRAGON4,KRAFT) = 6
Attribute(STONE_DRAGON4,ABWEHR) = 5

;Bilder
Dim KartenBilder(20)
KartenBilder(RED_DRAGON)=LoadImage("D:\Karten\RedDragon.bmp")
KartenBilder(ICE_DRAGON)=LoadImage("D:\Karten\IceDragon.bmp")
KartenBilder(BLACK_DRAGON)=LoadImage("D:\Karten\BlackDragon.bmp")
KartenBilder(STONE_DRAGON1)=LoadImage("D:\Karten\StoneDragon1.bmp")
KartenBilder(STONE_DRAGON2)=LoadImage("D:\Karten\StoneDragon2.bmp")
KartenBilder(STONE_DRAGON3)=LoadImage("D:\Karten\StoneDragon3.bmp")
KartenBilder(STONE_DRAGON4)=LoadImage("D:\Karten\StoneDragon4.bmp")

;################ INFOS ENDE ############################

Global HinterKarte=LoadImage("D:\Karten\HinterKarte.bmp")
Global KarteFont=LoadFont("Palatino Linotype",18,0,1,0)

MaskImage RedDragon,250,250,250
MaskImage IceDragon,250,250,250
MaskImage BlackDragon,250,250,250
MaskImage StoneDragon1,250,250,250
MaskImage StoneDragon2,250,250,250
MaskImage StoneDragon3,250,250,250
MaskImage StoneDragon4,250,250,250
MaskImage HinterKarte,250,250,250

Global Gezogen.Karten = Null
Global AnzahlKarten = 3

Type Karten
  Field card_id%
  Field x%
  Field y%
End Type



While Not KeyHit(1)
  If KeyHit(57)
    Ziehen()
  End If
  Zeichnen()
  ;Infos + Cursor
  Color 255,255,50
  Text 20,20,"Leertaste drücken um eine zufällige Karte an der Mausposition zu erstellen! ESC zum Beenden!"
  Color 255,255,100
  Rect MouseX()-3,MouseY(),7,1
  Rect MouseX(),MouseY()-3,1,7
  Flip
  Cls
Wend
End

Function Ziehen()
  drawn = Rand(MIN,MAX)
  nKarte.Karten = New Karten
  nKarte\card_id = drawn
  nKarte\x = MouseX()
  nKarte\y = MouseY()
End Function

Function Zeichnen()
  For dKarte.Karten = Each Karten
    DrawImage KartenBilder(dKarte\card_id), dKarte\x, dKarte\y
    ;Color 255,0,0               
    ;Rect dKarte\x, dKarte\y, 120, 160       <- ich hab die Kartenbilder ja net gehabt
    Color 255,255,255
    Text dKarte\x+80, dKarte\y+144, (Attribute(dKarte\card_id,KRAFT) + "/" + Attribute(dKarte\card_id,ABWEHR)), 1, 1
    Text dKarte\x+8, dKarte\y+8, KartenNamen$(dKarte\card_id), 0, 0        ;Steht vielleicht schon in deinem Bild drin
  Next
End Function

theBlade

BeitragSa, März 06, 2004 19:59
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm es wäre much speicher-schonender wenn mal alles in EIN dim-feld schreibt, zB

dim monster(name$,angriff,abwhr,zusatz_wert1,zusatz_wert2,...)
"Ich bin wie ich bin. Die einen kennen mich, die anderen können mich." (Dr. Konrad Adenauer)

UTFSB -> (use the fuckin "suchen"-button)

User posted image <- link -.-
 

Edlothiol

BeitragSa, März 06, 2004 20:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Dir ist klar, dass du damit z.B. Attribute(0) verschenkst? Ausserdem ist sowieso ziemlich schlechter Programmierstil, so etwas hard zu coden... Wenigstens Datas könnte man anfangs verwenden...

theBlade

BeitragSa, März 06, 2004 20:55
Antworten mit Zitat
Benutzer-Profile anzeigen
klar ist das scheisse, für sowas wären types geeignet. aber ich nehme an dass er noch nicht soviel erfahrung mit blitz hat, weshalb das ein gute möglichkeit wäre... auch weil es speicherschonender ist als wenn man 4 verschieden dim-felder hat.

edit: types nicht dims Rolling Eyes
"Ich bin wie ich bin. Die einen kennen mich, die anderen können mich." (Dr. Konrad Adenauer)

UTFSB -> (use the fuckin "suchen"-button)

User posted image <- link -.-
 

Edlothiol

BeitragSa, März 06, 2004 20:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich meinte eigentlich nicht dich damit, sondern Ctuchik Wink Er fängt nämlich mit RED_DRAGON = 1 an.

theBlade

BeitragSa, März 06, 2004 21:02
Antworten mit Zitat
Benutzer-Profile anzeigen
aso oopz Embarassed

hmm naja, aber auch mein dimfeld kann sehr schnell zu unübersichtlichbarkeit führen (dazu neigt hardcoding immer ^^)

deswegen wären types wie schon gesagt am besten dafür geeignet. aber wenn man noch nicht soviel programmiererfahrung hat macht das wenig sinn... (ich geh jetz einfach mal von, da ich den jungen (vllt. das mädel?? Wink) ja nicht kenne)[/quote]
"Ich bin wie ich bin. Die einen kennen mich, die anderen können mich." (Dr. Konrad Adenauer)

UTFSB -> (use the fuckin "suchen"-button)

User posted image <- link -.-

Ctuchik

BeitragSa, März 06, 2004 21:21
Antworten mit Zitat
Benutzer-Profile anzeigen
stimmt, ich hab mit 1 angefangen das verschenkt speicher ...
Der Vorteil wenn man Konstanten benutzt ist aber, dass ich das blitzschnell jederzeit ändern kann Smile
Übrigens würde ich die ganzen Kartenwerte normalerweise auch niemals in den Code reinschreiben, sondern z.b. aus Dateien lesen!
Ich wollte halt aber nciht gleich alles programmieren, ist ja nicht mein Spiel, ich fand nur Blitzers Code seltsam deshalb hab ich das nochmal neu geschrieben!

Types finde ich allerdings ungeeignet um die Daten über die Karten zu speichern! Wenn man Arrays benutzt kann man jedes Feld explizit ansprechen, bei Types müsste man immer nach dem richtigen suchen!

Types sind dafür für die einzelnen Karten geeignet die gerade auf dem Spielfeld liegen, deswegen hab ichs ja auch so gemacht!

@theBlade: Wie willst du Text und Zahlen in EINEM Array speichern?

mfG Ctuchik

Gehe zu Seite 1, 2, 3, 4  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group