HOME

Senin, 30 April 2012

Manual Book Game Perhitungan didalam Puzzle


SEKILAS TENTANG APLIKASI GAME PERHITUNGAN DI DALAM PUZZLE

Aplikasi ini berjudul “Game Perhitungan didalam Puzzle”. Didalam aplikasi ini terdapat angka yang terdiri dari 1 sampai 9 yang harus dipilih pemain ke lingkaran pada puzzle yang telah disediakan sehingga hasil dari penjumlahannya sama dengan yang teracak didalam kotak yang berada disebelah puzzle.
Berikut adalah listing dari game ini :

?-   set(yel(1)),
     window( _,_,win_func(_), "Numpuzzle",100,100,600,500).


%%%%%%%%%%%%%%%%%%
%    WINDOW     %
%%%%%%%%%%%%%%%%%%
    
win_func(init):- window_brush(_,rgb(0,0,0)),
               menu(pop_up, _,_,game(_),"Game"),
               init_data,random.


win_func(paint):- set(yel(1)),
     pen(1,rgb(255,100,0)),
     color_text_back(_,rgb(0,0,0)),
     color_text(_,rgb(255,100,0)),
     draw_ell,
     eval_sum,
     draw_score,
      pen(3,rgb(255,100,0)),
     draw_pull(1),
     draw_table.

win_func(mouse_click(X,Y)):- target(X,Y).

game(init):-
     menu(normal, _,_,s1(_),"New Game"),
     menu(separator, _,_,fail(_),_),
     menu(normal, _,_,s2(_),"Exit").

s1(press):-start.
s2(press):-close_window(_).


%%%%%%%%%%%%%%%%
%    INIT    %
%%%%%%%%%%%%%%%%

init_data:-
          assert(data(1,1,0)),
          assert(data(2,1,0)),
          assert(data(3,1,0)),
          assert(data(1,2,0)),
          assert(data(2,2,0)),
          assert(data(3,2,0)),
          assert(data(1,3,0)),
          assert(data(2,3,0)),
          assert(data(3,3,0)).

col(yellow):- brush(rgb(255,255,0)).
col(red):- brush(rgb(255,0,0)).
col(green):- brush(rgb(0,255,0)).
col(black):- brush(rgb(0,0,0)).


%%%%%%%%%%%%%%%%
%    DRAW    %
%%%%%%%%%%%%%%%%

draw_circle(X,Y,C):-col(C), ellipse(X,Y,X + 40,Y + 40).
draw_circle_text(X,Y,I):- I1 is print(I),
                     text_out(X + 17,Y + 13,I1).

draw_table:- data(X,Y,_),
            X1 is 40 + 90 * (X - 1),
            Y1 is 80 + 90 * (Y - 1),
            draw_circle(X1,Y1,black),
           draw_line(X1,Y1,X,Y),
            fail.

draw_line(X1,Y1,X,Y):- X < 3,
                   line(X1 + 40,Y1 + 20,X1 + 90,Y1 + 20).
draw_line(X1,Y1,X,Y):- Y < 3,
                   line(X1 + 20,Y1 + 40,X1 + 20,Y1 + 90).
draw_line(X1,Y1,X,Y).

draw_pull(I):- I < 10,  
             draw_p1(I),
              I1 is print(I),
             text_out(45 + 60 * (I - 1),355, I1),
             draw_circle(30,380,yellow),
             I2 is I + 1,
             draw_pull(I2).
draw_pull(10).

draw_p1(I):- X1 is 30 + 60 * (I - 1),
            draw_circle(X1,380,green).

draw_ell:- col(black),
          ellipse(70,120,140,170),
          ellipse(160,120,230,170),
           ellipse(70,210,140,260),
          ellipse(160,210,230,260).

draw_sum(X,Y,T):-
            T1 is print(T),
            X1 is 99 + 90 * (X - 1),
            Y1 is  136 + 90 * (Y - 1),
            text_out(X1,Y1,"    "),
            text_out(X1,Y1,T1).

eval_sum:- sum(S1,S2,S3,S4),
          draw_sum(1,1,S1),
          draw_sum(1,2,S2),
          draw_sum(2,1,S3),
          draw_sum(2,2,S4).

draw_score:- round_rect(370,160,470,250,17,17),
           line(420,160,420,250),
           line(370,205,470,205),
           tem(S1,S2,S3,S4),
           S11 is print(S1),
           S22 is print(S2),
           S33 is print(S3),
           S44 is print(S4),
           text_out(390,175,S11),
           text_out(438,175,S22),
           text_out(390,220,S33),
           text_out(438,220,S44).


%%%%%%%%%%%%%%%%%%
%    RANDOM     % 
%%%%%%%%%%%%%%%%%%

initial(G,List):-toX(G,L),forX(G,L,List).

toX(0,[]).
toX(X,[H|T]):-H is X,Z is X - 1,toX(Z,T).

delel([H|T],1,T,H).
delel([H1|T1],N,[H2|T2],E):-H2 is H1,Z is N - 1,
                     delel(T1,Z,T2,E).

forX(0,_,[]).
forX(D,L,[H|T]):-P is random(D) + 1,delel(L,P,L1,Z),
          H is Z,
          Temp is D - 1,
          forX(Temp,L1,T).

posel([H|T],1,H).
posel([H|T],N,E):- N1 is N - 1,posel(T,N1,E).

random:- initial(9,L),
        posel(L,1,E1),posel(L,2,E2),posel(L,3,E3), 
        posel(L,4,E4),posel(L,5,E5),posel(L,6,E6),
        posel(L,7,E7),posel(L,8,E8),posel(L,9,E9),
        S1 is E1 + E2 + E4 + E5,
        S2 is E2 + E3 + E5 + E6,
        S3 is E4 + E5 + E7 + E8,
        S4 is E5 + E6 + E8 + E9,
        set(tem(S1,S2,S3,S4)).


%%%%%%%%%%%%%%%%%
%    START         %
%%%%%%%%%%%%%%%%%

erase:- data(A,B,C),retract(data(A,B,C)),fail.
erase.

start:- erase,init_data,random,update_window(_).
    

%%%%%%%%%%%%%%%%%%%%
%    CONTROL   %
%%%%%%%%%%%%%%%%%%%%

target(X,Y):- X >= 30,X =< 550,
            I is (X + 30)//60,
            abs(Y - 400) =< 20,
             abs(X - (50 + 60 * (I - 1))) =< 20,
            yel(T),
            not(data(_,_,I)),
            (T =\= 0 -> draw_circle(30 + 60 * (T - 1),380,green)),
            draw_circle(30 + 60 * (I - 1),380,yellow),
            set(yel(I)).

target(X,Y):- X >= 40, X =< 260,
            Y >= 80, Y =< 300,
            X1 is (X + 50)//90,
            Y1 is (Y + 10)//90,
            abs(X - (60 + 90 * (X1 - 1))) =< 20,
            abs(Y - (100 + 90 * (Y1 - 1))) =< 20,
            put_pull(X1,Y1).

target(X,Y).

put_pull(X1,Y1):- data(X1,Y1,TT), TT =:= 0,
              put_next(X1,Y1).

put_pull(X1,Y1):- data(X1,Y1,T),
               retract(data(X1,Y1,T)),
              assert(data(X1,Y1,0)),
              yel(T1),
              T_new is 30 + 60 * (T - 1),
              draw_circle(T_new,380,yellow),
              X is 40 + 90 * (X1 - 1),
              Y is 80 + 90 * (Y1 - 1),
              eval_sum,
              draw_circle_text(X,Y,"  "),
               set(yel(T)),!,
              (T1 =\= 0 -> T_old is 30 + 60 * (T1 - 1),
                        draw_circle(T_old,380,green)).

put_next(X1,Y1):- X is 40 + 90 * (X1 - 1),
              Y is 80 + 90 * (Y1 - 1),
              yel(T),
              draw_circle_text(X,Y,T),
              retract(data(X1,Y1,_)),
              assert(data(X1,Y1,T)),
              XY is 30 + 60 * (T - 1),
              draw_circle(XY,380,red),
              eval_sum,
              check(T).

check(T):- data(_,_,0),change(T).
check(T):- res,set(yel(0)).

change(T):-T1 is T + 1,T1 =< 9, not(data(_,_,T1)),set(yel(T1)),
          X is 30 + 60 * (T1 - 1),draw_circle(X,380,yellow).
change(T):-T =:= 9,change(0).
change(T):-T1 is T + 1, change(T1).
                   

%%%%%%%%%%%%%%%%%%
%    RESULT     %
%%%%%%%%%%%%%%%%%%

sum(S1,S2,S3,S4):- data(1,1,T1),data(1,2,T2),data(1,3,T3),
                    data(2,1,T4),data(2,2,T5),data(2,3,T6),
                    data(3,1,T7),data(3,2,T8),data(3,3,T9),
                    S1 is T1 + T2 + T4 + T5,
                S2 is T2 + T3 + T5 + T6,
                S3 is T4 + T5 + T7 + T8,
                S4 is T5 + T6 + T8 + T9.

res:- sum(S1,S2,S3,S4),
     tem(S11,S22,S33,S44),
     S1 =:= S11, S2 =:= S33, S3 =:= S22, S4 =:= S44,
     you_win,erase.
res.

you_win:- beep(t),
         color_text(_,rgb(0,0,255)),
         text_out(390,140,"You win!!!"),wait(0.5),
         text_out(390,140,"                 "),wait(0.5),
         text_out(390,140,"You win!!!"),wait(0.5).






OUTPUT GAME








Storyboard game


Bagaimana Cara Membuat HTML5 Sederhana Permainan di Canvas


Kali ini akan di uraikan langkah - langkah yang dibutuhkan dalam pembuatan game canvas ini adalah :

1. Buat Canvas
// Create the canvas
var canvas = document.createElement("canvas");
var ctx = canvas.getContext("2d");
canvas.width = 512;
canvas.height = 480;
document.body.appendChild(canvas);
hal pertama yang harus kita lakukan adalah membuat elemen canvas . saya melakukan ini di JavaScript selain HTML untuk mendemonstrasikan bagaimana cara mudah ini disempurnakan. Pertama kita punya elemen, lalu kita dapat referensi isinya, atur dimensi dan lampirkan pada badan dokumen. 


2. Masukkan Gambar
// Background image
var bgReady = false;
var bgImage = new Image();
bgImage.onload = function () {
        bgReady = true;
};
bgImage.src = "images/background.png";
sebuah game membutuhkan penggambaran! Jadi mari masukkan beberapa gambar. Saya ingin ini sesederhana mungkin jadi masukkan sebuah Image yang sudah dibunggus indah atau sebagainya. bgReady digunakan untuk mengetahui canvas ketika sudah aman untuk digambar, coba untuk render it before it's loaded will throw a DOM error.
Kita lakukan ini pada setiap tiga gambar, kita butuhkan: background, hero and monster

3. Objek Permainan
// Game objects
var hero = {
        speed: 256, // movement in pixels per second
        x: 0,
        y: 0
};
var monster = {
        x: 0,
        y: 0
};
var monstersCaught = 0;
sekarang kita tentukan beberapa variabel yang akan kita gunakan nanti. hero mulai diatur dengan speed yang mana lebih cepat ia akan berpindah pada pixels per second. monster tidak akan berpindah jadi itu akan punya kordinat. terakhir, monstersCaught menampilkan berapa monster yang pemain telah dapatkan.

4. Input Pemain
// Handle keyboard controls
var keysDown = {};

addEventListener("keydown", function (e) {
        keysDown[e.keyCode] = true;
}, false);

addEventListener("keyup", function (e) {
        delete keysDown[e.keyCode];
}, false);
Sekarang untuk memasukkan pengendalian. Ini mungkin bagian pertama yang akan membawa developer yang datang dari web development background. Hal penting yang perlu diingat adalah kami tidak ingin menganjurkan untuk memasukkan peristiwa sesungguhnya ketika itu terjadi. Pada banyak web, mungkin sesuai untuk memulai animasi atau meminta data real ketika user memasukkan input. Tetapi pada tahap ini, kita ingin game kita masuk akal dan semata-mata tinggal di suatu tempat untuk mempermudah kontrol ketika dan jika sesuatu terjadi. Untuk alasan itu kita hanya ingin menampilkan input pengguna nanti.
Untuk menyelesaikan ini kita punya sebuah variabel keysDown yang menampilkan banyak kejadian keyCode. Jika kode kunci adalah objek, pengguna hanya menekan kunci itu, sederhana!

5. New Game
// Reset the game when the player catches a monster
var reset = function () {
        hero.x = canvas.width / 2;
        hero.y = canvas.height / 2;

        // Throw the monster somewhere on the screen randomly
        monster.x = 32 + (Math.random() * (canvas.width - 64));
        monster.y = 32 + (Math.random() * (canvas.height - 64));
};
fungsi reset disebut awal game baru, atau level atau apapun yang anda suka menyebutnya. Ini menempatkan hero (player) ditengah layar dan dimanapun secara acak.

6. Perbarui Objek
// Update game objects
var update = function (modifier) {
        if (38 in keysDown) { // Player holding up
               hero.y -= hero.speed * modifier;
        }
        if (40 in keysDown) { // Player holding down
               hero.y += hero.speed * modifier;

Selasa, 17 April 2012

Merancang Permainan yang Sukses (Designing Successful Games)


Kunci Sukses (The Key of Success)

Kunci keberhasilan adalah anda harus membuat game yang orang-orang dapat merasakan selalu ingin bermain, mereka harus menyukai ikon dan nama dari games tersebut sehingga mereka akan melihat gambaran permainan yang sebenarnya. Mereka harus menyukai deksripsi dan screen shot sehingga mereaka akan membeli permainan. Mereka harus menyukai lima menit pertama dari permainan dalam games tersebut dan mereka tidak akan menghapusnya dan memberikan rating yang buruk. Dan juga mereka harus menyukai setelah bermain selama dua jam sehingga mereka  akab memberitahu teman-temannya tentang games tersebut, membicarakannya dan memberikan ulasan yang baik, dll.
Permainan dari games yang anda buat juga harus berdiri diantara kompetisi. Sekitar 50 permainan muncul di App Store setiap hari. Jika orang-orang tidak memperhatikan permainan yang anda buat maka anda  akan menjualnya secara susah payah ke setiap eksemplar.  Anda harus membuat permainan yang anda buat terlihat menarik sehingga dapat dikenal dan dipermainkan oleh banyak orang.

Pertanyaannya adalah bagaimana untuk mencapainya?

1.     Memulai (Getiing Started)
2.    Memeriksa persaingan (check out the competition)
Jika anda ingin membuat permainan yang sukses pada IOS dan Android lebih baik anda memulai dengan melihat kompetisi. Pastikan anda juga memiliki iPhone atau iPad Touch atau jika terlalu mahal bagi anda, perangkat Android juga baik. Dapatkan iTunes pada PC anda dan periksalah 100  games gratis dan berbayar yang paling populer. Beli atau downloadlag games-games tersebut dan mainkan satu persatu. Ini akan member anda wawasan yang luas tentang  jenis permainan yang populer dari perangkat tersebut.