Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F111891132
Game7245377161224401861.autosave
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Mon, May 5, 20:09
Size
5 KB
Mime Type
text/x-c
Expires
Wed, May 7, 20:09 (1 d, 23 h)
Engine
blob
Format
Raw Data
Handle
25995506
Attached To
rBAFOURPROJECT InfoVisuGit
Game7245377161224401861.autosave
View Options
import java.text.DecimalFormat;
Mover mover; //The ball
Cylinder cyl; //The basis of all cylinders
PImage img;
PShape globe;
PShape robot; //The vilain
float depth = 2000; //the depth from the box
int score;
int scoreMalus = -1;
//Plate size
float plate_w=1000;
float plate_t=plate_w/20;
float x_coord, y_coord;
float mX, mY; //mouse X position
float xOnPlane, yOnPlane; //coordinate on 2D on the box
float rz, rx; //rotate x and rotate z
float cameraHeight;
float speed=10;
float radius=plate_t*4/5;
DecimalFormat f = new DecimalFormat("#0.0");
DecimalFormat f2 = new DecimalFormat("#0");
boolean shiftMod=false;
ParticleSystem partSys=null;
long previousFrame=0;
float timeIntervalParticle=0.5;//seconds
PGraphics gameSurface;
PGraphics statSurface;
PGraphics topView;
PGraphics scoreboard; //
void settings() {
size(displayWidth, displayHeight, P3D);
x_coord=width/2;
y_coord=height/2;
}
void setup() {
mover = new Mover();
cyl=new Cylinder();
img = loadImage("earth.jpg");
globe = createShape(SPHERE, radius);
globe.setStroke(false);
globe.setTexture(img);
img = loadImage("robotnik.png");
robot = loadShape("robotnik.obj");
robot.setTexture(img);
gameSurface=createGraphics(width, height-300, P3D);
topView=createGraphics(width, 300, P2D);
statSurface=createGraphics(width, 100, P2D);
scoreboard = createGraphics(100, 100, P2D); //
}
void draw() {
background(200);
drawGame();
image(gameSurface, 0, 0);
drawTopView();
image(topView, 0, height-300);
drawStat();
image(statSurface, 0, 0);
drawScoreboard();
image(scoreboard,300+30, height-300+20) ;
}
void drawTopView(){
topView.beginDraw();
topView.background(0, 0, 100);
topView.endDraw();
}
void drawStat() {
statSurface.beginDraw();
statSurface.background(0, 0, 0, 0);
statSurface.fill(0);
statSurface.textSize(25);
statSurface.text("Rotation X : "+f.format(rx/Math.PI*180)+"° Rotation Z : "+f.format(rz/Math.PI*180)+"° speed: "+f.format(speed/10), 5, 25);
statSurface.text("Ball location : ("+f2.format(mover.location.x)+","+f2.format(mover.location.y)+")", 5, 50);
statSurface.text("Ball velocity : ("+f2.format(mover.velocity.x)+","+f2.format(mover.velocity.y)+")", 5, 75);
statSurface.endDraw();
}
void drawGame() {
gameSurface.beginDraw();
gameSurface.background(100, 0, 0);
gameSurface.directionalLight(50, 100, 125, 0, 1, 0);
gameSurface.ambientLight(102, 102, 102);
gameSurface.pointLight(150, 150, 150, 0, -200, 0);
if (!shiftMod) {
mover.update();
mover.checkEdges();
if (partSys!=null) {
mover.checkCylinderCollision(partSys.cylinders, radius);
}
rz = map(x_coord, 0, width, -PI/3, PI/3);
rx = map(y_coord, 0, height, -PI/3, PI/3);
cameraHeight=400;
} else {
rz=0;
rx=-PI/2;
cameraHeight=0;
}
gameSurface.pushMatrix();
gameSurface.camera(0, -cameraHeight, depth, 0, 0, 0, 0, 1, 0);
gameSurface.rotateZ(rz);
gameSurface.rotateX(rx);
gameSurface.shininess(100);
gameSurface.box(plate_w, plate_t, plate_w);
//particles
if (partSys!=null) {
if (frameCount-previousFrame>=timeIntervalParticle*frameRate && !shiftMod) {
timeIntervalParticle=random(0.2, 1.2);
previousFrame=frameCount;
partSys.addParticle();
}
partSys.run(-(plate_t/2), PI/2);
}
if (shiftMod) {
float wMappedX=2*plate_w;
float wMappedY=1.1*plate_w;
xOnPlane=map(mouseX, 0, width, -wMappedX, wMappedX);
yOnPlane=map(mouseY, 0, height, -wMappedY, wMappedY);
cyl.draw(xOnPlane, yOnPlane, -(plate_t/2), PI/2);
}
gameSurface.translate(mover.getX(), -(plate_t/2+radius), mover.getY());
gameSurface.fill(255, 100, 100);
gameSurface.rotateX(mover.getRotX());
gameSurface.rotateZ(mover.getRotZ());
gameSurface.shape(globe);
gameSurface.popMatrix();
//Draw the text
gameSurface.pushMatrix();
/*gameSurface.fill(0);
gameSurface.textSize(15);
gameSurface.text("Rotation X : "+f.format(rx/Math.PI*180)+"° Rotation Z : "+f.format(rz/Math.PI*180)+"° speed: "+f.format(speed/10), 5, 15);
*/
if (shiftMod) {
gameSurface.textSize(50);
gameSurface.text("[EDIT MOD ON]", 50, 500);
}
gameSurface.fill(255);
gameSurface.popMatrix();
gameSurface.endDraw();
}
void mouseWheel(MouseEvent event) {
float e = event.getCount();
if (e<0) {
speed-=speed<=2?0:1;
} else {
speed+=speed>=15?0:1;
}
}
void mouseDragged() {
if (!shiftMod) {
float d=-(mX-mouseX)*speed/10;
x_coord=x_coord+d<=0?0:x_coord+d>=width?width:x_coord+d;
mX=mouseX;
d=(mY-mouseY)*speed/10;
y_coord=y_coord+d<=0?0:y_coord+d>=height?height:y_coord+d;
mY=mouseY;
}
}
void mousePressed() {
mX = mouseX;
mY = mouseY;
if (shiftMod && -plate_w/2<xOnPlane && xOnPlane<plate_w/2 && -plate_w/2<yOnPlane && yOnPlane<plate_w/2
&& (Math.abs(xOnPlane-mover.location.x) > 2*radius || Math.abs(yOnPlane-mover.location.y) > 2*radius)) {
partSys=new ParticleSystem(new PVector(xOnPlane, yOnPlane), mover, radius);
}
}
void keyPressed() {
if (keyCode == SHIFT) {
shiftMod=true;
}
}
void keyReleased() {
if (keyCode == SHIFT) {
shiftMod=false;
}
}
Event Timeline
Log In to Comment