Connect With Us

Lor separat

Sam vocabular

Tequilas Flamejantes

Instructions

About Me

Foto Saya
Ihsan Dwi Nugraha
Bogor, Jawa Barat, Indonesia
Music is My Soul
Lihat profil lengkapku

processing

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