Car car1, car2; CheckPoint cp; SkanaarKey sk; PFont font; float mx, my; //------------------------- void setup(){ font = loadFont("Creampuff-20.vlw"); textFont(font); textMode(SCREEN); sk = new SkanaarKey(); car1 = new Car(170,150,color(223)); car2 = new Car(130,150,color(155)); cp = new CheckPoint(car1,car2); size(300,300, P3D); mx = width/2f; my = height/2f; framerate(30); } //------------------------- void draw(){ background(245); fill(128); textAlign(LEFT); text(car2.score,20,20); textAlign(RIGHT); text(car1.score,width-20,20); float carMaxDist = constrain( max( dist(car1.x,car1.y,mx,my), dist(car2.x,car2.y,mx,my) )-0.6*mx ,0 , 2000); camera(mx, my, (1+carMaxDist/mx)*my / tan(PI/6), mx, my, 0, 0, 1, 0); rotateX(PI/4); lights(); cp.update(); cp.visualize(); car1.update(); car1.visualize(); car2.update(); car2.visualize(); if( sk.keyDown(sk.UP) ) car1.accelerate(); if( sk.keyDown(sk.DOWN) ) car1.brake(); if( sk.keyDown(sk.LEFT) ) car1.steer( -0.8 ); if( sk.keyDown(sk.RIGHT) ) car1.steer( 0.8 ); if( sk.keyDown('w') ) car2.accelerate(); if( sk.keyDown('s') ) car2.brake(); if( sk.keyDown('a') ) car2.steer( -0.8 ); if( sk.keyDown('d') ) car2.steer( 0.8 ); if( sk.keyDown('p') ) println(car1.x+","+car1.y); } //------------------------- void keyPressed(){ sk.keyPressed(key,keyCode); } //------------------------- void keyReleased(){ sk.keyReleased(key,keyCode); } //-------------------------