Mehrspieler game

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

black_threat

Betreff: Mehrspieler game

BeitragSa, Jul 03, 2004 14:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Arbeite gerade an einem mehrspieler game wo mit einer tastatur steuern kann. Mit tilesets natürlich. Nur hab ich das problem das die player auf der gleichen stelle starten wie kann ich das ändern? Hier mal der code:

Code: [AUSKLAPPEN]
Graphics 672,672,32,2

tileset = LoadAnimImage("tileset.png",32,32,0,2)
char = LoadImage("char.png")
MaskImage char,255,0,128
char2 = LoadImage("char2.png")
MaskImage char2,255,0,128

px#=6
py#=6
move=1
px2#=6
py2#=6
move2=1


Dim map(20,20)

Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0


For y = 0 To 20
For x = 0 To 20
Read map(x,y)
Next
Next

Repeat
SetBuffer BackBuffer()
Cls
If KeyDown(1) Then End


For y = 0 To 20
For x = 0 To 20
DrawBlock tileset,x*32,y*32,map(x,y)
Next
Next


If KeyDown(208) Then
If map(px#,py#+1) < 1 Then
py# = py# + 0.1
move = 1
End If
End If

If KeyDown(200) Then
If map(px#,py#-1) < 1 Then
py# = py# - 0.1
move = 1
End If
End If

If KeyDown(203) Then
If map(px#-1,py#) < 1 Then
px# = px# - 0.1
move = 1
End If
End If

If KeyDown(205) Then
If map(px#+1,py#) < 1 Then
px# = px# + 0.1
move = 1
End If
End If

If KeyDown(31) Then
If map(px2#,py2#+1) < 1 Then
py2# = py2# + 0.1
move2 = 1
End If
End If

If KeyDown(17) Then
If map(px2#,py2#-1) < 1 Then
py2# = py2# - 0.1
move2 = 1
End If
End If

If KeyDown(30) Then
If map(px2#-1,py2#) < 1 Then
px2# = px2# - 0.1
move2 = 1
End If
End If

If KeyDown(32) Then
If map(px2#+1,py2#) < 1 Then
px2# = px2# + 0.1
move2 = 1
End If
End If
x2=100
y2=100


If move = 1 Then x = px# * 32: y = py# * 32:DrawImage char,x,y
If move2 = 1 Then x = px2# * 32: y = py2# * 32:DrawImage char2,x,y

Flip
Forever


ich glaube das die zeile schuld ist: If move2 = 1 Then x = px2# * 32: y = py2# * 32:DrawImage char2,x,y
Da muss bei x und y x2 oder y2 sein nur hab ich da irgendwie probleme...

ich hoffe ihr könnt mir helfen


black_threat
 

Cloud

BeitragSa, Jul 03, 2004 14:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

px#=6
py#=6
move=1
px2#=6
py2#=6
move2=1


Ohne mir das alles genau anzugucken nehm ich mal an das das die Variablen für die spieler sind und da da beide Spieler die gleichen Werte bekommen starten Sie auch an der Selben stelle. Nimm für Spieler2 andere X Y Werte dann startet er auch wo anders
Duron 1200 | 256 RAM | Geforce 2 TI
 

black_threat

BeitragSa, Jul 03, 2004 15:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Cloud hat Folgendes geschrieben:
Code: [AUSKLAPPEN]

px#=6
py#=6
move=1
px2#=6
py2#=6
move2=1


Ohne mir das alles genau anzugucken nehm ich mal an das das die Variablen für die spieler sind und da da beide Spieler die gleichen Werte bekommen starten Sie auch an der Selben stelle. Nimm für Spieler2 andere X Y Werte dann startet er auch wo anders


ups Embarassed mein fehler hätte mir auffallen sollen

dAnKe

edit:
Wollte jetzt eine kollisionsabfrage machen das wenn sich die beiden charaktere berühren das dann ein text erscheint und wenn sie nicht mehr berühren das dann der text wieder verschwiendet, also:

If ImagesCollide(char,px#,py#,0,char2,px2#,py2#,0) Then
print"TEXT"
EndIf

funzt aber nicht.

Abrexxes

BeitragSa, Jul 03, 2004 17:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

If ImagesCollide(char,px#,py#,0,char2,px2#,py2#,0) Then Text 100,100, "TEXT"


Beachte auch das diese Zeile in der Hauptschleife vor Flip und nach CLS stehen sollte. Wink

Was denn Befehl "PRINT" angeht sagt die Hilfe folgendes:"Um die Position zu bestimmen, sollte LOCATE verwendet werden".

cu Linux
 

black_threat

BeitragSa, Jul 03, 2004 22:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Graphics 672,672,32,2
AppTitle "Catch me!"

tileset = LoadAnimImage("tileset.png",32,32,0,2)
char = LoadImage("char.png")
MaskImage char,255,0,128
char2 = LoadImage("char2.png")
MaskImage char2,255,0,128

px#=6
py#=6
move=1
px2#=3
py2#=3
move2=1


Dim map(20,20)

Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0


For y = 0 To 20
For x = 0 To 20
Read map(x,y)
Next
Next

Repeat
SetBuffer BackBuffer()
Cls
If KeyDown(1) Then End


For y = 0 To 20
For x = 0 To 20
DrawBlock tileset,x*32,y*32,map(x,y)
Next
Next


If KeyDown(208) Then
If map(px#,py#+1) < 1 Then
py# = py# + 0.1
move = 1
End If
End If

If KeyDown(200) Then
If map(px#,py#-1) < 1 Then
py# = py# - 0.1
move = 1
End If
End If

If KeyDown(203) Then
If map(px#-1,py#) < 1 Then
px# = px# - 0.1
move = 1
End If
End If

If KeyDown(205) Then
If map(px#+1,py#) < 1 Then
px# = px# + 0.1
move = 1
End If
End If

If KeyDown(31) Then
If map(px2#,py2#+1) < 1 Then
py2# = py2# + 0.1
move2 = 1
End If
End If

If KeyDown(17) Then
If map(px2#,py2#-1) < 1 Then
py2# = py2# - 0.1
move2 = 1
End If
End If

If KeyDown(30) Then
If map(px2#-1,py2#) < 1 Then
px2# = px2# - 0.1
move2 = 1
End If
End If

If KeyDown(32) Then
If map(px2#+1,py2#) < 1 Then
px2# = px2# + 0.1
move2 = 1
End If
End If
x2=100
y2=100


If move = 1 Then x = px# * 32: y = py# * 32:DrawImage char,x,y
If move2 = 1 Then x = px2# * 32: y = py2# * 32:DrawImage char2,x,y





Flip
Cls
If ImagesCollide(char,px#,py#,0,char2,px2#,py2#,0) Then Text 100,100, "geht net"
Forever


müsste funzen oder? tut es aber nicht Crying or Very sad

Abrexxes

BeitragSo, Jul 04, 2004 9:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Flip
Cls
If ImagesCollide(char,px#,py#,0,char2,px2#,py2#,0) Then Text 100,100, "geht net"
Forever


Nach dem FLIP löschst du direkt !!!!
dann guckst du ob eine Collision besteht und löscht (oben im Code) sofort wieder!!!

CLS hier muss weg
IF images Collide muss vor denn FLIP Befehl da ja noch was damit angezeigt werden soll bevor geFLIPt wird.

Ausserdem gehöhrt der Backbuffer nicht in die Hauptschleife!
Ausserdem kannst du dir bei Windowed Mode denselben sparen da Windows das selbst macht.

cu Linux

PS:Du solltest wirklich mal ein bissel Bücher oder Tuts durcharbeiten!

Code: [AUSKLAPPEN]

Graphics 672,672,32,2
SetBuffer BackBuffer() ;lass ich mal drin falls du vollbild machen willst später
clscolor 0,0,0


AppTitle "Catch me!"

tileset = LoadAnimImage("tileset.png",32,32,0,2)
char = LoadImage("char.png")
MaskImage char,255,0,128
char2 = LoadImage("char2.png")
MaskImage char2,255,0,128

px#=6
py#=6
move=1
px2#=3
py2#=3
move2=1


Dim map(20,20)

Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0


For y = 0 To 20
For x = 0 To 20
Read map(x,y)
Next
Next

While Not KeyHit(1) ;Hauptschleife
cls

For y = 0 To 20
For x = 0 To 20
DrawBlock tileset,x*32,y*32,map(x,y)
Next
Next

Gosub Steuerung

If move = 1 Then x = px# * 32: y = py# * 32:DrawImage char,x,y
If move2 = 1 Then x = px2# * 32: y = py2# * 32:DrawImage char2,x,y
If ImagesCollide(char,px#,py#,0,char2,px2#,py2#,0) Then Text 100,100, "geht net"

Flip


wend    ;ende Hauptschleife

.Steuerung

If KeyDown(208) Then
If map(px#,py#+1) < 1 Then
py# = py# + 0.1
move = 1
End If
End If

If KeyDown(200) Then
If map(px#,py#-1) < 1 Then
py# = py# - 0.1
move = 1
End If
End If

If KeyDown(203) Then
If map(px#-1,py#) < 1 Then
px# = px# - 0.1
move = 1
End If
End If

If KeyDown(205) Then
If map(px#+1,py#) < 1 Then
px# = px# + 0.1
move = 1
End If
End If

If KeyDown(31) Then
If map(px2#,py2#+1) < 1 Then
py2# = py2# + 0.1
move2 = 1
End If
End If

If KeyDown(17) Then
If map(px2#,py2#-1) < 1 Then
py2# = py2# - 0.1
move2 = 1
End If
End If

If KeyDown(30) Then
If map(px2#-1,py2#) < 1 Then
px2# = px2# - 0.1
move2 = 1
End If
End If

If KeyDown(32) Then
If map(px2#+1,py2#) < 1 Then
px2# = px2# + 0.1
move2 = 1
End If
End If
x2=100
y2=100

Return


ungetestet,beseitigt aber mal alles was mir so ins Auge trat ohne die Berechnungen zu prüfen.Wenns noch immer net eght lade die Grafiken hoch dann gucken wir weiter.

Hubsi

BeitragSo, Jul 04, 2004 10:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Linux hat Folgendes geschrieben:
IF images Collide muss vor denn FLIP Befehl da ja noch was damit angezeigt werden soll bevor geFLIPt wird.
Verwirrt den armen Kerl doch nicht so Very Happy
ImagesCollide zeigt gar nichts an und die Grafiken müssen noch nicht mal auf dem Bildschirm gepinselt werden um eine Kollision zu prüfen Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Abrexxes

BeitragSo, Jul 04, 2004 10:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

If ImagesCollide(char,px#,py#,0,char2,px2#,py2#,0) Then Text 100,100, "geht net"


Dann lese doch bitte dei Code-Zeile ganz,vor allem was nach THEN kommt. Wink

Hubsi

BeitragSo, Jul 04, 2004 10:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Embarassed Embarassed Is halt noch früh Embarassed Embarassed
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

black_threat

BeitragSo, Jul 04, 2004 10:42
Antworten mit Zitat
Benutzer-Profile anzeigen
es geht nicht, es steht immer der Text egal ob sich die beiden charaktere berühren oder nicht Confused

PS: Hab mir grad das buch von René Meyer bestellt, ich hoffe da kann ich noch was lernen.

Abrexxes

BeitragSo, Jul 04, 2004 10:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

If move = 1 Then x = px# * 32: y = py# * 32:DrawImage char,x,y
If move2 = 1 Then x = px2# * 32: y = py2# * 32:DrawImage char2,x,y
If ImagesCollide(char,px#,py#,0,char2,px2#,py2#,0) Then Text 100,100, "geht net"


Code: [AUSKLAPPEN]



If move = 1 Then cx = px# * 32: cy = py# * 32:DrawImage char,cx,cy
If move2 = 1 Then bx = px2# * 32: by = py2# * 32:DrawImage char2,bx,by
If ImagesCollide(char,cx,cy,0,char2,bx,by,0) Then Text 100,100, "geht net"
 

black_threat

BeitragSo, Jul 04, 2004 17:13
Antworten mit Zitat
Benutzer-Profile anzeigen
cool, das zweite funzt 8)
dAnKe

PS: Kannst du mir erklären was das für nen unterschied macht?

Abrexxes

BeitragSo, Jul 04, 2004 19:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Oben machst du nur prüfen ob px und py (von beiden) überlappen.Deine Figur wird aber laut Formel um den Wert *32 gezeichnet,dies wird dabei nicht berücksichtigt.

Bei der Zweiten wird die *32 multiplikation mit in eine neue Variable genommen. CX=PX*32

Bei der alten wäre nur PX rausgekommen ,aber da wurde deine Figur ja nicht gezeichnet,sondern beim wert PX*32.Alternativ hättest du jeweils (px*32) etc in den Imagecollide schreiben müssen.Ich finde aber meine Methode halt übersichtlicher.

Hoffe das war nicht zu kompliziert erklährt.

cu Linux

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group