Jump to content
Sign in to follow this  
aku

Kita Buat Game Simple Dulu

Recommended Posts

Ok gak kalo ko boleh bagi pseudocode ko atau pon AI ko camner.. Heheh game sokoban level3 dalam handset aku pon belum dapat aku settlekan.. good luck.. nanti boleh try lagi..

Aku dah siapkan level easy.. level lain mungkin yang lain boleh tolong siapkan..

Code boleh dipendekkan lagi.. Sesapa yang rajin dan free tu tolong lah pendek2kan code sekali..

Lagi satu button untuk restart game aku tak letak lagi.. hehe macam biasa sesapa boleh tolong letakkan??

Tictactoe yang dah diupdate boleh dimain di url nie:

http://www.b1naryc0de.net/tictactoe/tictactoe.html

kalo nak download gambar dan fail html untuk game nie gi url di bawah, right click file yang nak didownload dan pilis save as:

http://www.b1naryc0de.net/tictactoe/

Ok nie apa yang aku update (aku tak bagi full code sebab panjang sangat):

//set box status
var boxstat = new Array()
boxstat[0] = 'empty'
boxstat[1] = 'empty'
boxstat[2] = 'empty'
boxstat[3] = 'empty'
boxstat[4] = 'empty'
boxstat[5] = 'empty'
boxstat[6] = 'empty'
boxstat[7] = 'empty'
boxstat[8] = 'empty'

//set game status
gamestat = "proceed"
aku tambah dua variable(satu array).. boxstat[] tu simpan maklumat semasa setiap box samaada empty, milik player('player') atau milik computer('comp').. gamestat tue untuk simpan status game samada belum habis("proceed") atau dah habis("finish").. Kalo "proceed" player boleh click lagi kotak2 tue tapi kalo dan "finish" sebarang click event pada kotak2 tue tak mendatangkan apa2 faedah.. ;) Ok code seterusnya yang aku tambah adalah dalam function startGame(form)
function startGame(form)
{
blablabla..
...

if (start == 2)
{
  computermove()
}
}
fungsi code nie ialah kalo player pilih taknak start dulu (start == 2) dia akan panggil function computermove() sebelum user klik pada kotak2 tue.. dengan kata lain komputer akan jalan dulu.. Code seterusnya dalam function swap(a):
function swap(a)
{
  function shape_image() //set player shape image file
  {
    if (playerShape == 'x')
    {
      return "x.jpg";
    }
    else
    {
      return "o.jpg";
    }
  }
}
function shape_image() nie gunanya untuk set nama fail img untuk buah pemain.. variable playerShape tu diambil dari function gameLevel(shape).. Next.. dalam function swap(a) gak:
if (gamestat == "proceed") //enable click event if game not finish yet
  {
      if (a == '1')
      {
        if (boxstat[0] == 'empty')
        {
          box1.src = shape_image()
          boxstat[0] = 'player'
          computermove()
        }
      }
      else if (a == '2')
      {
        if (boxstat[1] == 'empty')
        {
          box2.src = shape_image()
          boxstat[1] = 'player'
          computermove()
        }
     }
Ok sini aku guna if (gamestat == "proceed") untuk pastikan code2 selepasnya hanya akan dijalankan jika game belum tamat.. if (boxstat[0] == 'empty') pulak check samada box1 dah diisi dengan buah atau masih empty.. Kalo empty baru dia akan tanda box tu dengan buah pemain dan set boxstat[] menjadi 'player' (dipegang oleh buah pemain).. Seterusnya dia script akan panggil function computermove() untuk memberi ruang kepada komputer lak jalan.. Code seterusnya dalam function computermove():
function computer_shape() // set computer shape
  {
    if (playerShape == 'x')
    {
      return "o.jpg"
    }
    else
    {
      return "x.jpg"
    }
  }
Sama macam player_shape() cuma dia songsangkan nama fail.. Lagi dalam function computermove()
if (checkresult() == "proceed")
  {
    gamestat = "proceed"
    if (level=="easy")
    {
      done = 'no'
      do
      {
        var rndnumber=Math.floor(Math.random()*9)+1
        done = move(rndnumber)
      } while (done == 'no')
    }
    checkresult();
  }
  function move(box_num)
  {
    boxavailable = 'no'
    for (i = 0; i <= 8; i++) //check for availability of empty box
    {
      if (boxstat[i] == 'empty')
      {
        boxavailable = 'yes'
      }
    }
    if (boxavailable == 'no')
    {
      return 'yes'
    }
    if (box_num == 1)
    {
      if (boxstat[0] == 'empty')
      {
        box1.src = computer_shape()
        boxstat[0] = 'comp'
        return 'yes'
      }
      else
      {
        return 'no'
      }
    }
    else if (box_num == 2)
    {
      if (boxstat[1] == 'empty')
      {
        box2.src = computer_shape()
        boxstat[1] = 'comp'
        return 'yes'
      }
      else
      {
        return 'no'
      }
    }
Ok mula2 dia akan run function checkresult().. kalo takde pihak yang menang lagi function ni akan pulangkan nilai "proceed" jadi computer boleh melakukan gerak seterusnya untuk menumbangkan pihak lawan.. Seterusnya dia akan check level apa yang kita pilih(dalam kes ni baru level easy jer yang dah siap).. So kalo kita pilih level easy dia akan pilih kotak secara random tanpa berfikir langsung dengan gunakan formula: var rndnumber=Math.floor(Math.random()*9)+1 Ok yang variable done tue sebenarnya berfungsi untuk jalankan pemilihan kotak secara rawak berulangkali selagi kotak yang dipilih adalah kotak yang dah diisi oleh pihak lawan atau komputer sendiri.. Dalam function move(box_num) tue kalo diperhatikan pada baris2 yang awal ada penggunaan for dan variable boxavailable.. fungsi dia untuk check semua kotak.. Kalo semua kotak dah berisi maka dia akan pulangkan nilai 'yes' dan hentikan pemilihan kotak oleh komputer.. Baris yang seterusnya sama dengan dalam function swap tadi untuk tandakan kotak yang dipilih dan set boxstat kepada "comp".. Code yang seterusnya aku tambah satu function baru iaitu function checkresult().. tugas dia untuk check result kalo2 ada sesiapa yang dah menang.. kalo diperhatikan dalam code diatas function checkresult dipanggil sebelum dan sesudah komputer membuat pemilihan kotak.. panggilan sebelum tu adalah untuk check kalo pemain dah menang.. panggilan selepas pulak check samada dengan gerakan terbaru komputer membuatkan komputer menang.. Bawah ni sebahagian code dalam function checkresult():
function checkresult() //check result after every single move
{
  /*the box combination to win the game ( -> array number)
  123 -> 012
  456 -> 345
  789 -> 678
  147 -> 036
  258 -> 147
  369 -> 258
  159 -> 048
  357 -> 246 */
  if ((boxstat[0] == 'player') && (boxstat[1] == 'player') && (boxstat[2] == 'player'))
  {
    document.getElementById('mainContainer').innerHTML = document.getElementById('mainContainer').innerHTML + "<br><br><center>YOU WIN!!</center>"
    gamestat = "finish" //end the game
  }
  else if ((boxstat[3] == 'player') && (boxstat[4] == 'player') && (boxstat[5] == 'player'))
  {
    document.getElementById('mainContainer').innerHTML = document.getElementById('mainContainer').innerHTML + "<br><br><center>YOU WIN!!</center>"
    gamestat = "finish" //end the game
  }
  else if ((boxstat[6] == 'player') && (boxstat[7] == 'player') && (boxstat[8] == 'player'))
  {
    document.getElementById('mainContainer').innerHTML = document.getElementById('mainContainer').innerHTML + "<br><br><center>YOU WIN!!</center>"
    gamestat = "finish" //end the game
  }
.....
.....
.....
//check if computer win
  else if ((boxstat[0] == 'comp') && (boxstat[1] == 'comp') && (boxstat[2] == 'comp'))
  {
    document.getElementById('mainContainer').innerHTML = document.getElementById('mainContainer').innerHTML + "<br><br><center>YOU LOSE!!</center>"
    gamestat = "finish" //end the game
  }
  else if ((boxstat[3] == 'comp') && (boxstat[4] == 'comp') && (boxstat[5] == 'comp'))
  {
    document.getElementById('mainContainer').innerHTML = document.getElementById('mainContainer').innerHTML + "<br><br><center>YOU LOSE!!</center>"
    gamestat = "finish" //end the game
  }
  else if ((boxstat[6] == 'comp') && (boxstat[7] == 'comp') && (boxstat[8] == 'comp'))
  {
    document.getElementById('mainContainer').innerHTML = document.getElementById('mainContainer').innerHTML + "<br><br><center>YOU LOSE!!</center>"
    gamestat = "finish" //end the game
  }
.....
.....
.....
else
  {
    return "proceed"
  }
}

Heheh.. setelah aku tulis penerangan nie baru aku teringat aku belum letak code untuk check kalo perlawanan seri... :P Lain hari aku update lagi.. Kalo ada sesapa boleh tolong lagi bagus..

p/s: error aku belum dapat detect jadi belum diperbetulkan..

Edited by b1naryc0de

Share this post


Link to post
Share on other sites

entahlah hoyoyo.. kalo diikutkan seminggu aku luangkan 2-3 jam jer untuk buat game nie.. tak jadi masalah aku rasa kalo yang lain boleh buat bende yang sama..

Kehkeh.. ni baru game simple.. belum lagi yang best2 ada 3D tu sume..

Edited by b1naryc0de

Share this post


Link to post
Share on other sites

waa.... penin aa nak baca kod.. hmm.. menukar level kembali menjadi pemantau... :) aku try kejap aritu.. aleh2 penin.. huhuhu.. skill coding ku sudah tumpul rupanya...

Share this post


Link to post
Share on other sites

aik?cuma tinggal korang 2 jer bersuara...lain mana? semangat aritu dah ilang dah ker?:P game sokoban aku enjin nyer dah siap...tinggal nak tambah level dan touch grafik jer...tp oleh krn korang dah tak der so aku punyer motivasi pun takder:P

Share this post


Link to post
Share on other sites

heheh.. kalo ko nak tau ko lah sumber motivasi aku untuk buat game tictactoe nie.. ko senyap motivasi aku pon hilang.. ko bersuara balik datang balik motivasi aku.. :D

Nanti ada masa terluang aku completekan game tictactoe nie.. pastu kita masing2 buat game simple2 tayang kat sini.. baru bersemangat sikit aku kalo ada orang lain gak buat game..

3D 3D 3D.. aku nak belajar 3D.. :angry:

Share this post


Link to post
Share on other sites

amacam? coding tadak sangkut ka? leh nak test... aku nak beli satu domain.. space dah ada.. nak host.. pastu aku nak alu2kan ntuk game lain plak.. tictactoe bleh siap bila?

b1naryc0de, hoyoyo80 dan putramaya jer aktif ntuk prohejk ni.. hmm..

walaupon game dianggap cikai.. usaha anda sangat membuatkan aku terharu... :)

Share this post


Link to post
Share on other sites

Moralnye beli lah game original.. hehe..

Sorrylah geng tak sempat nak buat.. banyak komitmen lain..

Hoyoyo tak nak join aku sekali ker buat online game ala2 ragnarok?? Yang nie commercial project.. $$

Share this post


Link to post
Share on other sites

hohoho.. easy dah setel syabas kepada programmer kita! nak teruskan ngan medium dan hard atau nak aku tutup projek ni dengan report aku? kene tunggu 15hb ni ntuk aku buat satu pengumuman :)

sblom tu nak tanya...

ada sesapa berminat nak buat game flash tak?

ada sesapa yang terer buat flash cartoon tak?

Share this post


Link to post
Share on other sites

Susah tu memang susah tapi boleh cuba.. Lagi pon bukan buat sorang2.. Heheh.. Kalau sorang confirm tak siap2..

Sambil buat sambil belajar.. Huhu kene dapatkan banyak rujukan nampaknye nanti.. :blink:

Jomlah join hoyoyo, vibrunica.. korang reti bab2 grafik ni kan??

Tictactoe ni insyaAllah kalo berkesempatan ahad ni aku buat level medium..

Ok gak nak buat game pakai flash.. tapi flash cartoon aku tak reti.. hehe..

Share this post


Link to post
Share on other sites

Adeh tak sempat nak sambung tictactoe.. Ingatkan nak buat malam ni tapi tadi ada mini reunion lak..

Takde sesape ker yang boleh sambung?? Pakai javascript jer..

Ni guide untuk buat level medium dari segi AI..

Computer still random pilih kotak.. Tetapi sebelum pilih kotak secara random dia akan check dulu kalau2 dengan isi satu kotak tue dia akan menang.. Kalau ada computer akan pilih kotak tue.. Dalam easy level computer random jer walaupon perlu isi satu kotak je lagi untuk menang..

Lagi satu selain check kotak dia akan menang computer juga akan check kotak yang player akan menang.. Jika ada kotak sedemikian computer akan pilih kotak tue untuk halang player menang.. Dalam easy level computer tak cuba halang pon pemain untuk menang..

Jadi untuk level medium player takkan menang bodoh..

Pseudo code dia lebih kurang camnie:

Check samada player/computer dah menang (sama macam level easy)
Check kotak untuk menang
If ada
  Pilih kotak tue
else
  Check kotak yang player akan menang
  if ada
    pilih kotak tue
  else
    random

Hope sesiapa yang tau javascript dapat sambung.. Ataupon sesiapa yang baru belajar javascript boleh buat sebagai latihan.. dan kepada sesiapa yang ingin nak buat game, gi belajar javascript pastu selesaikan level medium nie.. This is BASIC.. Kalau tak dapat buat jangan nak berangan nak buat game best2..

Share this post


Link to post
Share on other sites

alop saye org baru kat sine hmmmmm....mcm ner nak buat game sendiri yek gune atas system ape

aku nie semangat ader tp x der org nak ajo mcmner tuh...... lagi satu korang x rase rugi ker kalu korang da buat game yg best , cth nyer ragnarok online sekarang nie da ade ragnarok offline tau!!! pake system atas yare , fusion , vidar dan terbarunyer eAthena.... aku x der le tau gune bende nie tp aku akan buat online kasi ofline lepas tuh burn jual kat pasar malam 10 ringgit 10 ringgit cepat cepat sebelum terlambat!!!!!!!

hmmmmm bole aku join korang hehehek kite buat ~WinGuilD~ Online :P

game nie kite buat mcm ran online nak

sebenar nyer aku bkn tau mcm ner nak buat game nie tapi ader minat dan aku penuh dengan idea :lol:

Share this post


Link to post
Share on other sites

aku pun orang baru gak.. aku minat gak nak buat game simple-mimple camni.. klu korang dah start buat projek.. bleh tak korang bagi tau perkembangan game korang kat aku kalau bley la... bkn mye ape aku ni baru nak belajar.. mane la tau dapat skit ilmu kat korang..... ni e-mail aku [email protected] babai :lol::lol:

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...