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
[code][color=7777FF][b]import[/b][/color] java.awt.Rectangle; [color=7777FF][b]import[/b][/color] java.util.ArrayList; [color=7777FF][b]public[/b][/color] [color=7777FF][b]class[/b][/color] Collision [b]{[/b] [color=990066]Driver[/color] driver; [color=999999][i]// Arrayliste für die Spriteobjekte anlegen[/i][/color] ArrayList<WorldObject> spriteListWorld; [color=999999][i]// kleine Korrektion für genauere grafische Darstellung[/i][/color] [color=AA77FF]int[/color] collisionCorrection = 6; [color=999999][i]// Checksummen für Anzahl der Kollisionen[/i][/color] [color=AA77FF]int[/color] checkSumRight = 0; [color=AA77FF]int[/color] checkSumLeft = 0; [color=999999][i]// Konstruktor für die Sprites[/i][/color] [color=7777FF][b]public[/b][/color] Collision[b]([/b][color=990066]Driver[/color] driver, ArrayList<WorldObject> spriteListWorld[b])[/b] [b]{[/b] this.driver = driver; this.spriteListWorld = spriteListWorld; [color=999999][i]// Erstellen der Objekt Rechtecke[/i][/color] [color=7777FF][b]for[/b][/color] [b]([/b]WorldObject sprite : spriteListWorld[b])[/b] [b]{[/b] sprite.rectangle = [color=7777FF][b]new[/b][/color] [color=990066]Rectangle[/color][b]([/b][b]([/b][color=AA77FF]int[/color][b])[/b]sprite.x, [b]([/b][color=AA77FF]int[/color][b])[/b]sprite.y, sprite.width, sprite.height[b])[/b]; [b]}[/b] [b]}[/b] [color=999999][i]// Kollisionsabfrage für Objekte[/i][/color] [color=7777FF][b]public[/b][/color] [color=AA77FF]void[/color] collisionObjects[b]([/b][b])[/b] [b]{[/b] [color=999999][i]// Kollisionsabfragen des Driverobjekts mit den Worldobjekten[/i][/color] [color=7777FF][b]for[/b][/color] [b]([/b]WorldObject sprite : spriteListWorld[b])[/b] [b]{[/b] [color=999999][i]// // wechselt Kollisionsabfragen bei Imagewechsel[/i][/color] [color=999999][i]// driver.DriverFlipImage();[/i][/color] [color=999999][i]// Erstellen des Driver Rechtecks[/i][/color] driver.rectangle = [color=7777FF][b]new[/b][/color] [color=990066]Rectangle[/color][b]([/b][b]([/b][color=AA77FF]int[/color][b])[/b]driver.x, [b]([/b][color=AA77FF]int[/color][b])[/b]driver.y, driver.width, driver.height[b])[/b]; [color=999999][i]// Abfrage Driver kollidiert mit oberer Kante eines Objekts und fährt auf dem Objekt weiter[/i][/color] [color=7777FF][b]if[/b][/color] [b]([/b]driver.rectangle.intersectsLine[b]([/b]sprite.rectangle.getMinX[b]([/b][b])[/b] + collisionCorrection, sprite.rectangle.getMinY[b]([/b][b])[/b], sprite.rectangle.getMaxX[b]([/b][b])[/b] - collisionCorrection, sprite.rectangle.getMinY[b]([/b][b])[/b][b])[/b][b])[/b] [b]{[/b] driver.y = sprite.rectangle.getMinY[b]([/b][b])[/b] - driver.height - collisionCorrection; driver.landing = true; [b]}[/b] [color=999999][i]// Abfrage Driver kollidiert mit unterer Kante eines Objekts[/i][/color] [color=7777FF][b]if[/b][/color] [b]([/b]driver.rectangle.intersectsLine[b]([/b]sprite.rectangle.getMinX[b]([/b][b])[/b] + collisionCorrection, sprite.rectangle.getMaxY[b]([/b][b])[/b], sprite.rectangle.getMaxX[b]([/b][b])[/b] - collisionCorrection, sprite.rectangle.getMaxY[b]([/b][b])[/b][b])[/b][b])[/b] [b]{[/b] driver.jumping = false; [b]}[/b] [color=999999][i]// Kollisionsabfrage rechte Kante des Objekts (in der Folge kann der Driver solange nicht weiter nach Links)[/i][/color] [color=7777FF][b]if[/b][/color] [b]([/b]sprite.rectangle.intersectsLine[b]([/b]driver.rectangle.getMinX[b]([/b][b])[/b], driver.rectangle.getMinY[b]([/b][b])[/b] + collisionCorrection, driver.rectangle.getMinX[b]([/b][b])[/b], driver.rectangle.getMaxY[b]([/b][b])[/b] - collisionCorrection[b])[/b][b])[/b] [b]{[/b] driver.collideLeft = true; sprite.collideRight = true; [b]}[/b] [color=999999][i]// Kollisionsabfrage linke Kante des Objekts (in der Folge kann der Driver solange nicht weiter nach Rechts)[/i][/color] [color=7777FF][b]if[/b][/color] [b]([/b]sprite.rectangle.intersectsLine[b]([/b]driver.rectangle.getMaxX[b]([/b][b])[/b], driver.rectangle.getMinY[b]([/b][b])[/b] + collisionCorrection, driver.rectangle.getMaxX[b]([/b][b])[/b], driver.rectangle.getMaxY[b]([/b][b])[/b] - collisionCorrection[b])[/b][b])[/b] [b]{[/b] driver.collideRight = true; sprite.collideLeft = true; [b]}[/b] checkSum[b]([/b][b])[/b]; [b]}[/b] [b]}[/b] [color=999999][i]// Kollisionsabfrage für Gegner[/i][/color] [color=7777FF][b]public[/b][/color] [color=AA77FF]void[/color] collisionEnemy[b]([/b][b])[/b] [b]{[/b] [b]}[/b] [color=999999][i]// benötigte Checksumme der Kolisionen durch generierte Objekte[/i][/color] [color=7777FF][b]private[/b][/color] [color=AA77FF]void[/color] checkSum[b]([/b][b])[/b] [b]{[/b] [color=999999][i]// Gegenrechnen der Checksummen für Rechts und Links (erst wenn die Checksumme 0 ergibt kann der Driver in diese Richtung weiterfahren)[/i][/color] [color=7777FF][b]for[/b][/color] [b]([/b]WorldObject sprite : spriteListWorld[b])[/b] [b]{[/b] [color=999999][i]// Checksumme Rechts[/i][/color] [color=7777FF][b]if[/b][/color] [b]([/b]sprite.collideRight == [color=7777FF][b]true[/b][/color][b])[/b] [b]{[/b] checkSumRight++; [b]}[/b] [color=999999][i]// Checksumme Links[/i][/color] [color=7777FF][b]if[/b][/color] [b]([/b]sprite.collideLeft == [color=7777FF][b]true[/b][/color][b])[/b] [b]{[/b] checkSumLeft++; [b]}[/b] [color=999999][i]// Reset der boolschen Checkvariablen[/i][/color] sprite.collideRight = false; sprite.collideLeft = false; [b]}[/b] [color=999999][i]// Wenn Checksumme gleich 0 darf der Driver weiterfahren (links)[/i][/color] [color=7777FF][b]if[/b][/color] [b]([/b]checkSumRight == [color=FFFF77]0[/color][b])[/b] [b]{[/b] driver.collideLeft = false; [b]}[/b] [color=7777FF][b]else[/b][/color] [b]{[/b] checkSumRight = 0; [b]}[/b] [color=999999][i]// Wenn Checksumme gleich 0 darf der Driver weiterfahren (rechts)[/i][/color] [color=7777FF][b]if[/b][/color] [b]([/b]checkSumLeft == [color=FFFF77]0[/color][b])[/b] [b]{[/b] driver.collideRight = false; [b]}[/b] [color=7777FF][b]else[/b][/color] [b]{[/b] checkSumLeft = 0; [b]}[/b] [b]}[/b] [b]}[/b] [/code]
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; } } }