penjelasan script pada file platformer.pde
void setup() { // dipanggil secara otomatis
ketika program dijalankan
size(600,480); // seberapa besar jendela / layar untuk permainan
font =
loadFont("SansSerif-20.vlw");
guy_stand = loadImage("guy.png");
guy_run1 = loadImage("run1.png");
guy_run2 = loadImage("run2.png");
cameraOffsetX = 0.0;
minim
= new Minim(this);
music
= minim.loadFile("PinballSpring.mp3", 1024);
music.loop();
int
buffersize = 256;
sndJump = minim.loadSample("jump.wav", buffersize);
sndCoin = minim.loadSample("coin.wav", buffersize);
frameRate(24); // this means draw() will be called 24 times per second
resetGame(); // set up pemain, tingkat permainan, dan timer
}
void resetGame() {
//
This function copies start_Grid into worldGrid, putting coins back (Fungsi ini
salinan mulai Grid ke worldGrid, menempatkan koin kembali)
//
multiple levels could be supported by copying in a different start grid
(beberapa tingkat bisa didukung oleh menyalin di grid start yang berbeda)
thePlayer.reset(); // reset the coins collected number, etc.(reset nomor
koin yang dikumpulkan, dll)
theWorld.reload(); // reset world map (menulang tampilan awal)
//
reset timer in corner (menyetel ulang timer dipojok)
gameCurrentTimeSec = gameStartTimeSec = millis()/1000; // dividing by
1000 to turn milliseconds into seconds (membagi dengan 1000 untuk mengubah
milidetik ke detik)
}
Boolean gameWon() { // checks whether all
coins in the level have been collected (cek apakah semua koin di tingkat telah
dikumpulkan)
return
(thePlayer.coinsCollected == theWorld.coinsInStage);
}
void outlinedText(String sayThis, float atX,
float atY) {
textFont(font); // use the font we loaded (menggunakan font yang kita
muat)
fill(0);
// white for the upcoming text, drawn in each direction to make outline (putih
untuk teks yang akan datang, diambil di setiap arah untuk membuat outline)
text(sayThis, atX-1,atY);
text(sayThis, atX+1,atY);
text(sayThis, atX,atY-1);
text(sayThis, atX,atY+1);
fill(255); // white for this next text, in the middle (putih untuk teks
berikutnya, di tengah-tengah)
text(sayThis, atX,atY);
}
void updateCameraPosition() {
int
rightEdge = World.GRID_UNITS_WIDE*World.GRID_UNIT_SIZE-width;
// the
left side of the camera view should never go right of the above number (sisi
kiri dari tampilan kamera seharusnya tidak pernah pergi kanan dari nomor di
atas)
//
think of it as "total width of the game world"
(World.GRID_UNITS_WIDE*World.GRID_UNIT_SIZE)(menganggapnya sebagai "total
luas dunia game")
//
minus "width of the screen/window" (width) (minus "lebar layar /
window")
cameraOffsetX = thePlayer.position.x-width/2;
if(cameraOffsetX < 0) {
cameraOffsetX = 0;
}
if(cameraOffsetX > rightEdge) {
cameraOffsetX = rightEdge;
}
}
void draw() { // called automatically, 24
times per second because of setup()'s call to frameRate(24)(dipanggil secara
otomatis, 24 kali per detik karena setup () 's panggilan ke framerate (24))
pushMatrix(); // lets us easily undo the upcoming translate
call(memungkinkan kita dengan mudah membatalkan menerjemahkan panggilan yang
akan datang)
translate(-cameraOffsetX,0.0); // affects all upcoming graphics calls,
until popMatrix (mempengaruhi semua panggilan grafis yang akan datang, sampai
popMatrix)
updateCameraPosition();
theWorld.render();
thePlayer.inputCheck();
thePlayer.move();
thePlayer.draw();
popMatrix(); // undoes the translate function from earlier in draw()
(Membatalkan menerjemahkan fungsi dari awal draw ())
if(focused == false) { // does the window currently not have keyboard
focus? (apakah jendela saat ini tidak memiliki fokus keyboard?)
textAlign(CENTER);
outlinedText("Click this area to play.\n\nUse arrows to
move.\nSpacebar to jump.",width/2, height-90);
} else
{
textAlign(LEFT);
outlinedText("Coins:"+thePlayer.coinsCollected
+"/"+theWorld.coinsInStage,8, height-10);
textAlign(RIGHT);
if(gameWon() == false) { // stop updating timer after player
finishes(berhenti memperbarui waktu setelah pemain selesai)
gameCurrentTimeSec = millis()/1000; // dividing by 1000 to turn
milliseconds into seconds (membagi dengan 1000 untuk mengubah milidetik ke
detik)
}
int
minutes = (gameCurrentTimeSec-gameStartTimeSec)/60;
int
seconds = (gameCurrentTimeSec-gameStartTimeSec)%60;
if(seconds < 10) { // pad the "0" into the tens position
outlinedText(minutes +":0"+seconds,width-8, height-10);
}
else {
outlinedText(minutes +":"+seconds,width-8, height-10);
}
textAlign(CENTER); // center align the text (pusat menyelaraskan teks)
outlinedText("Music by Kevin MacLeod, Code by Chris
DeLeon",width/2, 25);
if(gameWon())
{
outlinedText("All Coins Collected!\nPress R to
Reset.",width/2, height/2-12);
}
}
}
void keyPressed() {
theKeyboard.pressKey(key,keyCode);
}
void keyReleased() {
theKeyboard.releaseKey(key,keyCode);
}
void stop() { // automatically called when
program exits. here we'll stop and unload sounds.(otomatis dipanggil ketika
program keluar. di sini kita akan berhenti dan membongkar suara.)
music.close();
sndJump.close();
sndCoin.close();
minim.stop();
super.stop(); // tells program to continue doing its normal ending
activity (memberitahu program untuk terus melakukan kegiatan akhir secara
normal)
}
0 komentar:
Posting Komentar