normale stehenbleib kollision

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

mas93

Betreff: normale stehenbleib kollision

BeitragMi, Aug 09, 2006 13:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Graphics 229, 178, 32

Global x_back = 0
Global y_back = 0
Global players_x = 100
Global players_y = 200


SetBuffer BackBuffer()



;Laden/Masken
players = LoadImage("7/player1.PNG")
MaskImage players,0,0,255
stuhl1 = LoadImage("7/stuhl.PNG")
MaskImage stuhl1, 0, 0, 255
stuhl2 = LoadImage("7/stuhl2.PNG")
MaskImage stuhl2, 0, 0, 255
schulbuch = LoadImage("7/buch offen.PNG")
MaskImage schulbuch, 0, 0, 255
marsboden = LoadImage("7/marsboden.PNG")
MaskImage marsboden, 0, 0, 255
tisch = LoadImage("7/tisch.PNG")
MaskImage tisch, 0, 0, 255
tischgross = LoadImage("7/tisch gross.PNG")
MaskImage tischgross, 0, 0, 255
metallboden = LoadImage ("7/metallboden.PNG")
laptop = LoadImage ("7/laptop.PNG")
MaskImage laptop,0,0,255
fussmatte = LoadImage ("7/fussmatte.PNG")
pult = LoadImage ("7/pult.PNG")
MaskImage pult,0,0,255
schuleinnen = LoadImage ("7/schuleinnen.PNG")
MaskImage schuleinnen,0,0,255
x=109
y=155
Repeat



If KeyDown(200) Then y=y-1 ;Oben
If KeyDown(208) Then y=y+1 ;Unten
If KeyDown(203) Then x=x-1 ;Links
If KeyDown(205) Then x=x+1 ;Rechts

;Anzeigen
TileBlock metallboden
DrawImage schuleinnen,0,0
DrawImage fussmatte,92,160



DrawImage pult,90,33
DrawImage tisch,30,65
DrawImage tisch,61,65
DrawImage tisch,92,65
DrawImage tisch,123,65
DrawImage tisch,154,65
DrawImage tisch,185,65
DrawImage tisch,30,91
DrawImage tisch,61,91
DrawImage tisch,92,91
DrawImage tisch,123,91
DrawImage tisch,154,91
DrawImage tisch,185,91
DrawImage tisch,30,117
DrawImage tisch,61,117
DrawImage tisch,92,117
DrawImage tisch,123,117
DrawImage tisch,154,117
DrawImage tisch,185,117

If x < 0 Then x = 0
If y < 0 Then y = 0
If x > GraphicsWidth()-ImageWidth(players) Then x = GraphicsWidth()-ImageWidth(players)
If y > GraphicsHeight()-ImageHeight(players) Then y = GraphicsHeight()-ImageHeight(players)


DrawImage players,x,y
If ImagesCollide(players,x,y,0,pult,90,33,0) Then kollision()
Flip
Cls
Until KeyHit(1)
End
Function kollision()
;Laden/Masken
players = LoadImage("7/player1.PNG")
MaskImage players,0,0,255
stuhl1 = LoadImage("7/stuhl.PNG")
MaskImage stuhl1, 0, 0, 255
stuhl2 = LoadImage("7/stuhl2.PNG")
MaskImage stuhl2, 0, 0, 255
schulbuch = LoadImage("7/buch offen.PNG")
MaskImage schulbuch, 0, 0, 255
marsboden = LoadImage("7/marsboden.PNG")
MaskImage marsboden, 0, 0, 255
tisch = LoadImage("7/tisch.PNG")
MaskImage tisch, 0, 0, 255
tischgross = LoadImage("7/tisch gross.PNG")
MaskImage tischgross, 0, 0, 255
metallboden = LoadImage ("7/metallboden.PNG")
laptop = LoadImage ("7/laptop.PNG")
MaskImage laptop,0,0,255
fussmatte = LoadImage ("7/fussmatte.PNG")
pult = LoadImage ("7/pult.PNG")
MaskImage pult,0,0,255
schuleinnen = LoadImage ("7/schuleinnen.PNG")
MaskImage schuleinnen,0,0,255
If ImagesCollide(players,x,y,0,pult,90,33,0) Then
Repeat
;so lange die werte zurück gehen, die man erst bei der funktion "tasten()" gedrückt hat...
players_x = players_x -x_back
players_y =players_y -y_back
;wenn sich die vierecke noch berühren, bleibt "weiter" bei null
If ImagesCollide(players,x,y,0,pult,90,33,0) = False Then weiter = 1
Until weiter = 1
EndIf
End Function


was ist in diesem Code bei der funktion kollision() falsch?
wenn ich über das Pult laufe bleibe Ich nicht davor stehen sonder laufe langsam über es.
 

Dreamora

BeitragMi, Aug 09, 2006 13:50
Antworten mit Zitat
Benutzer-Profile anzeigen
tut mir leid, kann deinen Code nicht lesen

Könntest du ihn akzeptabel formatieren und mit [ code] [ /code] umschleissen (ohne den leerschlag nach [).
Danke vielmal Smile
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

mas93

BeitragMi, Aug 09, 2006 14:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Graphics 229, 178, 32

Global x_back = 0
Global y_back = 0
Global players_x = 100
Global players_y = 200


SetBuffer BackBuffer()



;Laden/Masken
players = LoadImage("7/player1.PNG")
MaskImage players,0,0,255
stuhl1 = LoadImage("7/stuhl.PNG")
MaskImage stuhl1, 0, 0, 255
stuhl2 = LoadImage("7/stuhl2.PNG")
MaskImage stuhl2, 0, 0, 255
schulbuch = LoadImage("7/buch offen.PNG")
MaskImage schulbuch, 0, 0, 255
marsboden = LoadImage("7/marsboden.PNG")
MaskImage marsboden, 0, 0, 255
tisch = LoadImage("7/tisch.PNG")
MaskImage tisch, 0, 0, 255
tischgross = LoadImage("7/tisch gross.PNG")
MaskImage tischgross, 0, 0, 255
metallboden = LoadImage ("7/metallboden.PNG")
laptop = LoadImage ("7/laptop.PNG")
MaskImage laptop,0,0,255
fussmatte = LoadImage ("7/fussmatte.PNG")
pult = LoadImage ("7/pult.PNG")
MaskImage pult,0,0,255
schuleinnen = LoadImage ("7/schuleinnen.PNG")
MaskImage schuleinnen,0,0,255
x=109
y=155
Repeat



If KeyDown(200) Then y=y-1 ;Oben
If KeyDown(208) Then y=y+1 ;Unten
If KeyDown(203) Then x=x-1 ;Links
If KeyDown(205) Then x=x+1 ;Rechts

;Anzeigen
TileBlock metallboden
DrawImage schuleinnen,0,0
DrawImage fussmatte,92,160



DrawImage pult,90,33
DrawImage tisch,30,65
DrawImage tisch,61,65
DrawImage tisch,92,65
DrawImage tisch,123,65
DrawImage tisch,154,65
DrawImage tisch,185,65
DrawImage tisch,30,91
DrawImage tisch,61,91
DrawImage tisch,92,91
DrawImage tisch,123,91
DrawImage tisch,154,91
DrawImage tisch,185,91
DrawImage tisch,30,117
DrawImage tisch,61,117
DrawImage tisch,92,117
DrawImage tisch,123,117
DrawImage tisch,154,117
DrawImage tisch,185,117

If x < 0 Then x = 0
If y < 0 Then y = 0
If x > GraphicsWidth()-ImageWidth(players) Then x = GraphicsWidth()-ImageWidth(players)
If y > GraphicsHeight()-ImageHeight(players) Then y = GraphicsHeight()-ImageHeight(players)


DrawImage players,x,y
If ImagesCollide(players,x,y,0,pult,90,33,0) Then kollision()
Flip
Cls
Until KeyHit(1)
End
Function kollision()
;Laden/Masken
players = LoadImage("7/player1.PNG")
MaskImage players,0,0,255
stuhl1 = LoadImage("7/stuhl.PNG")
MaskImage stuhl1, 0, 0, 255
stuhl2 = LoadImage("7/stuhl2.PNG")
MaskImage stuhl2, 0, 0, 255
schulbuch = LoadImage("7/buch offen.PNG")
MaskImage schulbuch, 0, 0, 255
marsboden = LoadImage("7/marsboden.PNG")
MaskImage marsboden, 0, 0, 255
tisch = LoadImage("7/tisch.PNG")
MaskImage tisch, 0, 0, 255
tischgross = LoadImage("7/tisch gross.PNG")
MaskImage tischgross, 0, 0, 255
metallboden = LoadImage ("7/metallboden.PNG")
laptop = LoadImage ("7/laptop.PNG")
MaskImage laptop,0,0,255
fussmatte = LoadImage ("7/fussmatte.PNG")
pult = LoadImage ("7/pult.PNG")
MaskImage pult,0,0,255
schuleinnen = LoadImage ("7/schuleinnen.PNG")
MaskImage schuleinnen,0,0,255
If ImagesCollide(players,x,y,0,pult,90,33,0) Then
Repeat
;so lange die werte zurück gehen, die man erst bei der funktion "tasten()" gedrückt hat...
players_x = players_x -x_back
players_y =players_y -y_back
;wenn sich die vierecke noch berühren, bleibt "weiter" bei null
If ImagesCollide(players,x,y,0,pult,90,33,0) = False Then weiter = 1
Until weiter = 1
EndIf
End Function

PowerProgrammer

BeitragMi, Aug 09, 2006 15:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Dein Code ist immer noch nicht lesbar! Vielleicht solltest du Einrückungen einbauen und ein paar mehr Kommentare! Außerdem würde mich interessieren, was der Code denn tun soll.

Und in diesem Forum gibt es eine Funktion, um deine Beiträge zu editieren. Dann musst du, weil du Code-Klammern vergessen hast, nicht einen neuen Beitrag posten!

Mfg PowerProgrammer
www.xairro.com Alles für Webmaster und Programmierer! Es gibt mehr als bloß einen Counter!
 

c64

BeitragMi, Aug 09, 2006 15:05
Antworten mit Zitat
Benutzer-Profile anzeigen
In einer Function Images laden ist nicht unbedingt Optimal !

( EDIT: Es sei denn es ist eine Direkte Lade Function, die nur für das einmalige laden oder Neu Laden von Mediafiles dient !)

Denn bei jedem Aufruf der Function Kollision werden deine Images wieder neu Geladen. Was evtl. der Grund sein könnte warum es dann langsamer wird.

Dennoch eine Saubere Formatierung würde der Übersichtlichkeit nachhaltig gut tun ! Wink Wie Dreamora schon sagte.
Betreten verboten! Kinder haften für ihre Eltern!

DerHase

BeitragMi, Aug 09, 2006 15:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Dieses x_back und y_back sind so weit ich sehe immer 0, wozu sind die dann da? Und Grafiken solltest Du am Anfang laden und nicht immer wieder zwischen durch, weil das überhaupt keinen Sinn macht, sie sind solange im Speicher bist Du sie manuell löscht.

Schranz0r

BeitragDo, Aug 10, 2006 15:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Und mal ein Tip von mir:

Schau dir mal die befehle an:

Dim
DrawimageRect

Wär für deinen Fall wohl nicht schlecht, wenn ich deinen wirren Code betrachte

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group