2Player

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

felix-pf

Betreff: 2Player

BeitragFr, Sep 02, 2005 18:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
Ich hätt da mal ne Frage (Wer hätte das gedacht!?)!
Wie bekomme ich es hin dass sich 2 Spieler abwechseln?
z.B.: tic,tac,toe
Wenn Spieler-1 (Kreuz) auf ein feld gecklickt hat kommt Spieler-2 (Kreis)
dann wieder Spieler-1 u.s.w. ...

Keine Ahnung wie ich das anstellen soll ...

Anfänger eben Rolling Eyes .
 

Ekrits

BeitragFr, Sep 02, 2005 18:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Solln die Spieler an zwei Pcs sitzten oder beide an einem?
EKRITSel: Rechtschreibfehler sind gewollt um eure Aufmerksamkeit zutesten!


Magians vs. Nekromats 100% COMPLETE

felix-pf

BeitragFr, Sep 02, 2005 18:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Beide an einem.
 

Ekrits

BeitragFr, Sep 02, 2005 18:09
Antworten mit Zitat
Benutzer-Profile anzeigen
dann mach einfach das man das alleine spielen kann und wenn man zu zweit ist sich einfach abwechselt
EKRITSel: Rechtschreibfehler sind gewollt um eure Aufmerksamkeit zutesten!


Magians vs. Nekromats 100% COMPLETE

felix-pf

BeitragFr, Sep 02, 2005 18:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Und wie soll ich machen das Immer abwechselnd Kreuz und Kreis gezeichnet wird?

Hagbard

BeitragFr, Sep 02, 2005 18:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

viellcht mit Variablen.

[code]
var = 0

Repeat

If var = 0 Then; Spieler 1 ist dran
...
EndIf

If var = 1 Then ; Spieler 2 ist dran
...
EndIF
Until KeyHit(1)
  • Zuletzt bearbeitet von Hagbard am Sa, Apr 17, 2010 16:24, insgesamt einmal bearbeitet
 

Ekrits

BeitragFr, Sep 02, 2005 18:17
Antworten mit Zitat
Benutzer-Profile anzeigen
mach Code: [AUSKLAPPEN]


C = 0

A = 0   ;Ist zwar umständlich aber übersichtlich

 If mousehit(1) Then A = A + 1

 If A = 0 Then C = 0
 If A = 2 Then C = 0
 If A = 4 Then C = 0
 If A = 6 Then C = 0
 If A = 8 Then C = 0

 If A = 1 Then C = 1
 If A = 3 Then C = 1
 If A = 5 Then C = 1
 If A = 7 Then C = 1
 If A = 9 Then C = 1

 If C = 1 Then Kreis
 If C = 0 Then Kreuz





EKRITSel: Rechtschreibfehler sind gewollt um eure Aufmerksamkeit zutesten!


Magians vs. Nekromats 100% COMPLETE

felix-pf

BeitragFr, Sep 02, 2005 18:18
Antworten mit Zitat
Benutzer-Profile anzeigen
@Blacky
Aja, ich probier das mal..
da kann man aber nicht alles in eine Repeat-Schleife stecken, oder?

felix-pf

BeitragFr, Sep 02, 2005 18:22
Antworten mit Zitat
Benutzer-Profile anzeigen
@Ekrits
Für tic,tac,toe is das gut..
Aber wenn das unendlich weitergehen soll?
 

Ekrits

BeitragFr, Sep 02, 2005 18:29
Antworten mit Zitat
Benutzer-Profile anzeigen
mach doch einfach dann

if A = 8 Then A = 0 oder so
EKRITSel: Rechtschreibfehler sind gewollt um eure Aufmerksamkeit zutesten!


Magians vs. Nekromats 100% COMPLETE

Smokie

BeitragFr, Sep 02, 2005 18:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Ektirs Idee ist gut nur man kanns einfacher machen Laughing

Code: [AUSKLAPPEN]

if Mousehit(1) then
a=a + 1

endif

if a Mod 2 = 0 then
;ist Spieler1 am zug
endif

if a Mod 2 <> 0 then
;ist Spieler2 am Zug
endif


a Mod 2 bedeutet a durch 2(a:2) Und Mod errechnet den Rest und wenn a Mod 2 = 0 ist die Zahl gerade

Smokie
M-Soft Studios Mit selbst gemachtem Forum!!!
Unbequem lebt's sich schwer.
Musik macht erst Spaß, wenn man sie mit 2,8 facher Geschwindigkeit hört
Zuletzt bearbeitet von Smokie am Fr Jan 01, 1888 51:58 PM, insgesamt 1000-mal bearbeitet
 

Ekrits

BeitragFr, Sep 02, 2005 18:32
Antworten mit Zitat
Benutzer-Profile anzeigen
ok das ist kürzer (für Anfänger mach sowas aber übersichtlicher)
EKRITSel: Rechtschreibfehler sind gewollt um eure Aufmerksamkeit zutesten!


Magians vs. Nekromats 100% COMPLETE

Smokie

BeitragFr, Sep 02, 2005 18:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Das macht nix.
Ist besser er lernt es gleich richtig als erst falsch und dann ncohmal um gewöhnen und ich finde es sehr ferständlich Very Happy
Grüße
Smokie
M-Soft Studios Mit selbst gemachtem Forum!!!
Unbequem lebt's sich schwer.
Musik macht erst Spaß, wenn man sie mit 2,8 facher Geschwindigkeit hört
Zuletzt bearbeitet von Smokie am Fr Jan 01, 1888 51:58 PM, insgesamt 1000-mal bearbeitet

Lunatix

BeitragFr, Sep 02, 2005 18:48
Antworten mit Zitat
Benutzer-Profile anzeigen
also... ich würd es mit Types machen(I love them)
z.B.:

BlitzBasic: [AUSKLAPPEN]


Type Cross
Field img,x#,y#
End Type

Type Ellipse
Field img,xä,y#
End Type

Global cross = LoadImage(\"cross.bmp\")
Global ellipse = LoadImage(\"ellipse.bmp\")

While Not KeyHit(1)

Cls

If MouseHit(1)
player = Not player

If player = 0
CreateCross(MouseX(),MouseY())
Else
CreateEllipse(MouseX(),MouseY())
EndIf

EndIf



UpDateImages()
Flip 0
Wend
End

Function NewCross(x#,y#)
C.Cross = New Cross
C\img = CopyImage(cross)
C\x = x
C\y = y
End Function

Function NewEllipse(x#,y#)
E.Ellipse = New Ellipse
E\img = CopyImage(ellipse)
E\x = x
E\y = y
End Function



Function UpDateImages()

For C.Cross = Each Cross
DrawImage C\img,C\x,C\y
Next

For E.Ellipse = Each Ellipse
DrawImage E\img,E\x,E\y
Next

End Function
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragFr, Sep 02, 2005 18:50
Antworten mit Zitat
Benutzer-Profile anzeigen
hab da mal ein Beispiel gecodet wie man es machen kann!
Einfach mal testen
Übergänge und Animation ist nicht dabei, sonst wirds schwere zu verstehenBlitzBasic: [AUSKLAPPEN]

Graphics 800 ,600,16,2

Dim Spielfeld (2 ,2)

Global Zuggesezt ; Stautsvariable
Global Player_am_Zug = 1; erklärt sich selbst

SetBuffer BackBuffer ()

While Not KeyDown (1)

Draw_Spielfeld () ; hier das Feld malen
SteinSetzen () ; Prüfen ob Maus gedrückt und Stein einsetzten

If Steine_Checken () = 1 Then NeuesSpiel() ; bei 1 alle felder belegt
If Zuggesezt = 1 Then ; einer der Spieler hat seinen Stein gesetzt
If Player_am_Zug = 1 Then ; Spieler wechseln 1 <> 2
Player_am_Zug = 2
Else
Player_am_Zug = 1
End If
Zuggesezt = 0 ; Neuer Zug freischalten
End If

Text 10,500,\"Player \"+Player_am_Zug + \" am Zug\"
Flip
Cls
Wend

End

Function NeuesSpiel()

For x = 0 To 2
For y = 0 To 2
Spielfeld (x,y) = 0
Next
Next
End Function

Function Steine_Checken ()
For x = 0 To 2
For y = 0 To 2
If Spielfeld (x,y) = 0 Then Return ; alle Felder belegt?
Next
Next
Return 1 ; alle Felder belegt
;checken ob gewonnen noch einbauen

End Function

Function Draw_Spielfeld () ; hier das feld malen
For x = 0 To 2
For y = 0 To 2

Select Spielfeld (x,y)
Case 1
Rect ( x * 100) , 0 + (y * 100) , 100 ,100
Case 2
Oval ( x * 100) , 0 + (y * 100) , 100 ,100
End Select
Next
Next
End Function



Function SteinSetzen ()
If MouseHit (1) Then
x = MouseX () / 100
y = MouseY () / 100
If x < 3 Then
If y < 3 Then
If Spielfeld (x,y) = 0 Then
Spielfeld (x,y) = Player_am_Zug
Zuggesezt = 1
End If
End If
End If
End If
End Function

[BB2D | BB3D | BB+]
 

IonPainter

BeitragFr, Sep 02, 2005 19:48
Antworten mit Zitat
Benutzer-Profile anzeigen
hab da auch noch einen:

BlitzBasic: [AUSKLAPPEN]
Type Symbol

Field Typ
Field X
Field Y

End Type

Global Trigger

Graphics 800, 600, 32, 2
SetBuffer BackBuffer()

While Not KeyHit(1)

Cls

If MouseHit(1)

Trigger = (Trigger + 1) Mod 2
Symbol.Symbol = New Symbol

Symbol\Typ = Trigger
Symbol\X = MouseX()
Symbol\Y = MouseY()


End If

For Symbol.Symbol = Each Symbol

Select Symbol\Typ

Case 0

Color 0, 255, 0
Line Symbol\x-10, Symbol\y-10, Symbol\x+10, Symbol\y+10
Line Symbol\x+10, Symbol\y-10, Symbol\x-10, Symbol\y+10

Case 1

Color 255, 0, 0
Oval Symbol\x-8, Symbol\y-8, 16, 16, 0

End Select

Next

Oval MouseX()-2, MouseY()-2, 4, 4 ;Mauszeiger

Flip

Wend

felix-pf

BeitragSa, Sep 03, 2005 17:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hätt das jetzt so gemacht(Testversion).
Aber da gibts 2probleme:
1. Warum funktioniert die linie nur im ersten Rechteck?
2. Wie krieg es hin das die linie bleibt? Was passiert wenn man "Cls" wegnimmt kann man sich ja denken!
BlitzBasic: [AUSKLAPPEN]
;################# ********
;## TIC TAC TOE ## *(BB2D)*
;################# ********
Graphics 800,600,16,1
SetBuffer BackBuffer()

;Global maus=LoadImage(\"maus.bmp\")

Repeat
Cls
Rect(155,56,100,100,0) ;links oben
Rect(155,220,100,100,0) ;links mitte
Rect(155,385,100,100,0) ;links unten
Rect(360,56,100,100,0) ;mitte oben
Rect(360,220,100,100,0) ;mitte mitte
Rect(360,385,100,100,0) ;mitte unten
Rect(550,56,100,100,0) ;rechts oben
Rect(550,220,100,100,0) ;rechts mitte
Rect(550,385,100,100,0) ;rechts unten


If MouseHit(1) And mauskollision(155,56) Then Line(155,56,255,156) ;links oben
If MouseHit(1) And mauskollision(155,220) Then Line(155,220,255,320) ;links mitte
If MouseHit(1) And mauskollision(155,385) Then Line(155,385,255,485) ;links unten
If MouseHit(1) And mauskollision(360,56) Then Line(360,56,460,156) ;mitte oben
If MouseHit(1) And mauskollision(360,220) Then Line(360,220,460,320) ;mitte mitte
If MouseHit(1) And mauskollision(360,385) Then Line(360,385,460,485) ;mitte unten
If MouseHit(1) And mauskollision(550,56) Then Line(550,56,650,156) ;rechts oben
If MouseHit(1) And mauskollision(550,220) Then Line(550,220,650,320) ;rechts mitte
If MouseHit(1) And mauskollision(550,385) Then Line(550,385,650,485) ;rechts unten
;DrawImage(maus,MouseX(),MouseY())
Rect (MouseX(),MouseY(),8,8)
Flip
Until KeyHit(1)

WaitKey


End

Function mauskollision(kastenx,kasteny)
If RectsOverlap(kastenx,kasteny,100,100,MouseX(),MouseY(),1,1) Then Return True
Return False
End Function

User posted image

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Sep 03, 2005 18:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Ohe mir den Code groß anzusehen gibt es hier Probleme, denn nach dem aufruf von Mousehit(1) ist die wieder Null
so kannste das in diesem Fall umgehen
BlitzBasic: [AUSKLAPPEN]
If MouseHit(1) 
If mauskollision(155,56) Then Line(155,56,255,156) ;links oben
If mauskollision(155,220) Then Line(155,220,255,320) ;links mitte
If mauskollision(155,385) Then Line(155,385,255,485) ;links unten
If mauskollision(360,56) Then Line(360,56,460,156) ;mitte oben
If mauskollision(360,220) Then Line(360,220,460,320) ;mitte mitte
If mauskollision(360,385) Then Line(360,385,460,485) ;mitte unten
If mauskollision(550,56) Then Line(550,56,650,156) ;rechts oben
If mauskollision(550,220) Then Line(550,220,650,320) ;rechts mitte
If mauskollision(550,385) Then Line(550,385,650,485) ;rechts unten
End If


damit die Linie bleibt mußt du eine Statusvariable setzten!
Beispiel:
BlitzBasic: [AUSKLAPPEN]
If MouseHit(1) 
If mauskollision(155,56) Then L1= 1 ;links oben
...
...
End If

If L1= 1 Then Line (155,56,255,156) ;links oben
[BB2D | BB3D | BB+]

felix-pf

BeitragSa, Sep 03, 2005 19:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Aja...
das is gut Razz
Thx
User posted image

felix-pf

BeitragSo, Sep 04, 2005 21:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich das mch kommen gleich am anfang überall striche rein.
(Sry wenn ich noch ein bisschen schwer von begriff bin Rolling Eyes )
Code: [AUSKLAPPEN]
;################# ********
;## TIC TAC TOE ## *(BB2D)*
;################# ********
Graphics 800,600,16,1
SetBuffer BackBuffer()

Global k1=0
Global k2=0
Global k3=0
Global k4=0
Global k5=0
Global k6=0
Global k7=0
Global k8=0
Global k9=0

;Global maus=LoadImage("maus.bmp")

Repeat
Cls
Rect(155,56,100,100,0)   ;links  oben
Rect(155,220,100,100,0)  ;links  mitte
Rect(155,385,100,100,0)  ;links  unten
Rect(360,56,100,100,0)   ;mitte  oben
Rect(360,220,100,100,0)  ;mitte  mitte
Rect(360,385,100,100,0)  ;mitte  unten
Rect(550,56,100,100,0)   ;rechts oben
Rect(550,220,100,100,0)  ;rechts mitte
Rect(550,385,100,100,0)  ;rechts unten


If MouseHit(1) Then
 If mauskollision(1,155,56)  And k1 = 0 Then k1 = x
 If mauskollision(2,155,220) And k2 = 0 Then k2 = x
 If mauskollision(3,155,385) And k3 = 0 Then k3 = x
 If mauskollision(4,360,56)  And k4 = 0 Then k2 = x
 If mauskollision(5,360,220) And k5 = 0 Then k2 = x
 If mauskollision(6,360,385) And k6 = 0 Then k2 = x
 If mauskollision(7,550,56)  And k7 = 0 Then k2 = x
 If mauskollision(8,550,220) And k8 = 0 Then k2 = x
 If mauskollision(9,550,385) And k9 = 0 Then k2 = x
 EndIf
 
 If k1 = x Then Line(155,56,255,156)  ;links  oben
 If k2 = x Then Line(155,220,255,320) ;links  mitte
 If k3 = x Then Line(155,385,255,485) ;links  unten
 If k4 = x Then Line(360,56,460,156)  ;mitte  oben
 If k5 = x Then Line(360,220,460,320) ;mitte  mitte
 If k6 = x Then Line(360,385,460,485) ;mitte  unten
 If m7 = x Then Line(550,56,650,156)  ;rechts oben
 If k8 = x Then Line(550,220,650,320) ;rechts mitte
 If k9 = x Then Line(550,385,650,485) ;rechts unten
 
;DrawImage(maus,MouseX(),MouseY())
Rect (MouseX(),MouseY(),8,8)
Flip
Until KeyHit(1)

WaitKey


End

Function mauskollision(kasten#,kastenx,kasteny)
If Rectsoverlap(kastenx,kasteny,100,100,MouseX(),MouseY(),1,1) Then
 

 
Return True
EndIf

Return False
End Function
User posted image

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group