Mehrspieler game
Übersicht

black_threatBetreff: Mehrspieler game |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. ![]() Was denn Befehl "PRINT" angeht sagt die Hilfe folgendes:"Um die Position zu bestimmen, sollte LOCATE verwendet werden". cu Linux |
||
black_threat |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() |
||
![]() |
Abrexxes |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() ImagesCollide zeigt gar nichts an und die Grafiken müssen noch nicht mal auf dem Bildschirm gepinselt werden um eine Kollision zu prüfen ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
Abrexxes |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. ![]() |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
![]() ![]() ![]() ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
black_threat |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
es geht nicht, es steht immer der Text egal ob sich die beiden charaktere berühren oder nicht ![]() PS: Hab mir grad das buch von René Meyer bestellt, ich hoffe da kann ich noch was lernen. |
||
![]() |
Abrexxes |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
cool, das zweite funzt 8)
dAnKe PS: Kannst du mir erklären was das für nen unterschied macht? |
||
![]() |
Abrexxes |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group