Skip to content
Home
Post Code
Jass (Warcraft III)
Wurst
GUI (Warcraft III)
Galaxy (StarCraft II)
GUI (StarCraft II)
C++
Java
Delphi
Text
Search Code
Compare Code
Uploads
Draw
Create New Drawing
View Drawings
Graph
Log in
import java
.
awt
.
Rectangle;
import java
.
util
.
ArrayList;
public
class
Collision
{
Driver driver;
// Arrayliste für die Spriteobjekte anlegen
ArrayList<WorldObject> spriteListWorld;
// kleine Korrektion für genauere grafische Darstellung
int collisionCorrection = 6;
// Checksummen für Anzahl der Kollisionen
int checkSumRight = 0;
int checkSumLeft = 0;
// Konstruktor für die Sprites
public Collision(Driver driver, ArrayList<WorldObject> spriteListWorld) {
this.driver = driver;
this.spriteListWorld = spriteListWorld;
// Erstellen der Objekt Rechtecke
for (WorldObject sprite : spriteListWorld) {
sprite.rectangle = new Rectangle((int)sprite.x, (int)sprite.y, sprite.width, sprite.height);
}
}
// Kollisionsabfrage für Objekte
public
void collisionObjects()
{
// Kollisionsabfragen des Driverobjekts mit den Worldobjekten
for (WorldObject sprite : spriteListWorld) {
// // wechselt Kollisionsabfragen bei Imagewechsel
// driver.DriverFlipImage();
// Erstellen des Driver Rechtecks
driver.rectangle = new Rectangle((int)driver.x, (int)driver.y, driver.width, driver.height);
// Abfrage Driver kollidiert mit oberer Kante eines Objekts und fährt auf dem Objekt weiter
if (driver.rectangle.intersectsLine(sprite.rectangle.getMinX() + collisionCorrection, sprite.rectangle.getMinY(),
sprite.rectangle.getMaxX() - collisionCorrection, sprite.rectangle.getMinY())) {
driver.y = sprite.rectangle.getMinY() - driver.height - collisionCorrection;
driver.landing = true;
}
// Abfrage Driver kollidiert mit unterer Kante eines Objekts
if
(driver
.
rectangle
.
intersectsLine(sprite
.
rectangle
.
getMinX()
+
collisionCorrection
,
sprite
.
rectangle
.
getMaxY()
,
sprite
.
rectangle
.
getMaxX()
-
collisionCorrection
,
sprite
.
rectangle
.
getMaxY()))
{
driver.jumping = false;
}
// Kollisionsabfrage rechte Kante des Objekts (in der Folge kann der Driver solange nicht weiter nach Links)
if
(sprite
.
rectangle
.
intersectsLine(driver
.
rectangle
.
getMinX()
,
driver
.
rectangle
.
getMinY()
+
collisionCorrection
,
driver
.
rectangle
.
getMinX()
,
driver
.
rectangle
.
getMaxY()
-
collisionCorrection))
{
driver.collideLeft = true;
sprite.collideRight = true;
}
// Kollisionsabfrage linke Kante des Objekts (in der Folge kann der Driver solange nicht weiter nach Rechts)
if
(sprite
.
rectangle
.
intersectsLine(driver
.
rectangle
.
getMaxX()
,
driver
.
rectangle
.
getMinY()
+
collisionCorrection
,
driver
.
rectangle
.
getMaxX()
,
driver
.
rectangle
.
getMaxY()
-
collisionCorrection))
{
driver.collideRight = true;
sprite.collideLeft = true;
}
checkSum();
}
}
// Kollisionsabfrage für Gegner
public
void collisionEnemy()
{
}
// benötigte Checksumme der Kolisionen durch generierte Objekte
private
void checkSum()
{
// Gegenrechnen der Checksummen für Rechts und Links (erst wenn die Checksumme 0 ergibt kann der Driver in diese Richtung weiterfahren)
for (WorldObject sprite : spriteListWorld) {
// Checksumme Rechts
if (sprite.collideRight == true) {
checkSumRight++;
}
// Checksumme Links
if
(sprite
.
collideLeft
=
=
true
)
{
checkSumLeft++;
}
// Reset der boolschen Checkvariablen
sprite
.
collideRight
=
false
;
sprite
.
collideLeft
=
false
;
}
// Wenn Checksumme gleich 0 darf der Driver weiterfahren (links)
if
(checkSumRight
=
=
0
)
{
driver.collideLeft = false;
}
else
{
checkSumRight = 0;
}
// Wenn Checksumme gleich 0 darf der Driver weiterfahren (rechts)
if
(checkSumLeft
=
=
0
)
{
driver.collideRight = false;
}
else
{
checkSumLeft = 0;
}
}
}
select language
jass
java
> delphi
C++
php
GSL
galaxy
visualBasic
wurst
Text
Markdown
select style
default
bbcode - default
Jasscraft
jasscraft html
visual
lightweight
> lightweightNr
goto line:
Compare with:
text copy window
edit this code
post new code
import java.awt.Rectangle; import java.util.ArrayList; public class Collision { Driver driver; // Arrayliste für die Spriteobjekte anlegen ArrayList<WorldObject> spriteListWorld; // kleine Korrektion für genauere grafische Darstellung int collisionCorrection = 6; // Checksummen für Anzahl der Kollisionen int checkSumRight = 0; int checkSumLeft = 0; // Konstruktor für die Sprites public Collision(Driver driver, ArrayList<WorldObject> spriteListWorld) { this.driver = driver; this.spriteListWorld = spriteListWorld; // Erstellen der Objekt Rechtecke for (WorldObject sprite : spriteListWorld) { sprite.rectangle = new Rectangle((int)sprite.x, (int)sprite.y, sprite.width, sprite.height); } } // Kollisionsabfrage für Objekte public void collisionObjects() { // Kollisionsabfragen des Driverobjekts mit den Worldobjekten for (WorldObject sprite : spriteListWorld) { // // wechselt Kollisionsabfragen bei Imagewechsel // driver.DriverFlipImage(); // Erstellen des Driver Rechtecks driver.rectangle = new Rectangle((int)driver.x, (int)driver.y, driver.width, driver.height); // Abfrage Driver kollidiert mit oberer Kante eines Objekts und fährt auf dem Objekt weiter if (driver.rectangle.intersectsLine(sprite.rectangle.getMinX() + collisionCorrection, sprite.rectangle.getMinY(), sprite.rectangle.getMaxX() - collisionCorrection, sprite.rectangle.getMinY())) { driver.y = sprite.rectangle.getMinY() - driver.height - collisionCorrection; driver.landing = true; } // Abfrage Driver kollidiert mit unterer Kante eines Objekts if (driver.rectangle.intersectsLine(sprite.rectangle.getMinX() + collisionCorrection, sprite.rectangle.getMaxY(), sprite.rectangle.getMaxX() - collisionCorrection, sprite.rectangle.getMaxY())) { driver.jumping = false; } // Kollisionsabfrage rechte Kante des Objekts (in der Folge kann der Driver solange nicht weiter nach Links) if (sprite.rectangle.intersectsLine(driver.rectangle.getMinX(), driver.rectangle.getMinY() + collisionCorrection, driver.rectangle.getMinX(), driver.rectangle.getMaxY() - collisionCorrection)) { driver.collideLeft = true; sprite.collideRight = true; } // Kollisionsabfrage linke Kante des Objekts (in der Folge kann der Driver solange nicht weiter nach Rechts) if (sprite.rectangle.intersectsLine(driver.rectangle.getMaxX(), driver.rectangle.getMinY() + collisionCorrection, driver.rectangle.getMaxX(), driver.rectangle.getMaxY() - collisionCorrection)) { driver.collideRight = true; sprite.collideLeft = true; } checkSum(); } } // Kollisionsabfrage für Gegner public void collisionEnemy() { } // benötigte Checksumme der Kolisionen durch generierte Objekte private void checkSum() { // Gegenrechnen der Checksummen für Rechts und Links (erst wenn die Checksumme 0 ergibt kann der Driver in diese Richtung weiterfahren) for (WorldObject sprite : spriteListWorld) { // Checksumme Rechts if (sprite.collideRight == true) { checkSumRight++; } // Checksumme Links if (sprite.collideLeft == true) { checkSumLeft++; } // Reset der boolschen Checkvariablen sprite.collideRight = false; sprite.collideLeft = false; } // Wenn Checksumme gleich 0 darf der Driver weiterfahren (links) if (checkSumRight == 0) { driver.collideLeft = false; } else { checkSumRight = 0; } // Wenn Checksumme gleich 0 darf der Driver weiterfahren (rechts) if (checkSumLeft == 0) { driver.collideRight = false; } else { checkSumLeft = 0; } } }