Tugas Softskill Pengantar Teknologi Game
Tugas Softskill Pengantar Teknologi Game
import
pbox2d.*;
import
org.jbox2d.common.*;
import
org.jbox2d.dynamics.joints.*;
import
org.jbox2d.collision.shapes.*;
import
org.jbox2d.collision.shapes.Shape;
import
org.jbox2d.common.*;
import
org.jbox2d.dynamics.*;
import
org.jbox2d.dynamics.contacts.*;
// A
reference to our box2d world
PBox2D
box2d;
PFont f,f2;
int
puntsIA=0;
int
puntsJugador=0;
Box box;
Box box2;
Vec2 pos;
ArrayList
particles;
ArrayList
boundaries;
Spring
spring;
Spring
spring2;
void setup()
{
size(300,500);
smooth();
f =
createFont("Arial",50,true);
f2 = createFont("Arial",10,true);
// Initialize box2d physics and create the
world
box2d = new PBox2D(this);
box2d.createWorld();
box2d.setGravity(0,0);
box = new Box(width/2,height*7/8);
box2 = new Box(width/2,height*1/8);
spring = new Spring();
spring.bind(width/2,height*7/8,box,200,8,1);
//x defecte 100,5,0.9
spring2 = new Spring();
spring2.bind(width/2,height*1/8,box2,10000,5,0.9);
particles = new ArrayList();
boundaries =
new ArrayList();
boundaries.add(new
Boundary(0,height-5,width*3/4,10)); //barrera superior
boundaries.add(new
Boundary(width,height-5,width*3/4,10));
boundaries.add(new
Boundary(width/2,height+50,width*1/4,10)); // una xicoteta barrera darrere de
la porteria
/*boundaries.add(new
Boundary(width/2-55,height+30,10,50));
boundaries.add(new
Boundary(width/2+55,height+30,10,50)); */
boundaries.add(new
Boundary(0,5,width*3/4,10));//barrera inferior
boundaries.add(new
Boundary(width,5,width*3/4,10));
boundaries.add(new
Boundary(width/2,-50,width*1/4,10));// una xicoteta barrera darrere de la
porteria
/*boundaries.add(new
Boundary(width/2-55,-30,10,50));
boundaries.add(new
Boundary(width/2+55,-30,10,50)); */
boundaries.add(new
Boundary(width-5,height/2,10,height)); //barrera esq
boundaries.add(new
Boundary(5,height/2,10,height)); //barrera der
particles.add(new
Particle(width/2,height/4,10));
}
void draw()
{
background(255);
line(0,height/2,width,height/2);
textFont(f);
fill(0,50);
textAlign(CENTER);
text(puntsJugador,width/2,height/4);
text(puntsIA,width/2,height*3/4);
box2d.step();
for (int i = 0; i < boundaries.size();
i++) {
Boundary wall = (Boundary)
boundaries.get(i);
wall.display();
}
box.body.setAngularVelocity(0);
Particle p =
(Particle) particles.get(0);
p.display();
pos = box2d.getScreenPos(p.body);
if (p.goalIA()) {
particles.remove(0);
puntsIA++;
//println("Jugador "+
puntsJugador+" - IA "+puntsIA);
particles.add(new Particle(width/2,height/4,10));
}
if (p.goalJugador()) {
particles.remove(0);
puntsJugador++;
//println("Jugador "+
puntsJugador+" - IA "+puntsIA);
particles.add(new
Particle(width/2,height*3/4,10));
}
if (pos.y<height/2) {
spring.update(constrain(pos.x,50,width-50),max(pos.y,height-30));
} else {
spring.update(constrain(pos.x,50,width-50),constrain(max(pos.y,height/2),height/2,height));
}
spring2.update(mouseX,min(mouseY,height/2));
// Pintem els discos
box.display();
box2.display();
textFont(f2);
fill(255);
textAlign(LEFT);
text("Reset UP - Restart
DOWN",10,10);
}
//key code
void
keyPressed(){
if (key == CODED){
if (keyCode == UP){
particles.remove(0);
//println("Jugador "+
puntsJugador+" - IA "+puntsIA);
particles.add(new
Particle(width/2,height/2,10));
}
if (keyCode == DOWN){
particles.remove(0);
puntsJugador=0;
puntsIA=0;
particles.add(new
Particle(width/2,height/4,10));
}
}
}
Logika
Program
Program diatas merupakan class utama dari game Air Hockey
ini. Langkah pertama adalah mengimport semua class yang dibutuhkan dalam
aplikasi. Terdapat method draw() pada potongan program di asat, method inilah
yang akan menggambar interface aplikasi seperti garis lapangan, warna lapangan,
hingga pemukul dan bola itu sendiri.
Untuk proses jika bola masuk ke suatu gawang maka harus
dibuat fungsinya. Pada bagian atas terdapat kondisi if yang parameternya diisi
p.goalIA() jika user berhasil memasukan bola, sedangkan parameter
p.goalJugador() jika lawan berhasil memasukan bola. di kondisi itulah kita
mendeklarasikan suatu statement, pada kasus ini jika bola masuk maka skor akan
ditambahkan dan posisi bola diset ulang.
Pada game ini terdapat fitur reset dan restart. Untuk reset
dengan cara menekan tombol up pada keyboard, sedangkan untuk restart dengan
menekan tombol down pada keyboard. Untuk membuat fitur tersebut pada program
ini memanfaatkan method keyPressed().
Uji coba aplikasi :
Kondisi menang (Jika user mendapatkan score)
Kondisi kalah (Jika komputer mendapatkan score)
0 Komentar:
Posting Komentar
Berlangganan Posting Komentar [Atom]
<< Beranda