Senin, 04 Juni 2012

Manuall Book Game Node Music Baron

SEKILAS TENTANG GAME NODE MUSIC BARON

 Permainan atau game yang berjudul "Game Node Music Baron".
Tampilan awal permainan ini berisikan papan node yang masih kosong, yang nantinya akan di isikan node-node lagu sehingga menjadi sebuah node lagu yang indah. game ini sangat di peruntukan intuk musisi-musisi yang ingin menciptakan lagu denghan node ataupun pemula yang ingin belajar tentang node-node dasar.

 Dari papan node kosong yang ada di atas kita isikan node-node yang indah, kita rangkai dengan sepenuh jiwa sehingga menjadi lagu yang sangat indah. seperti pada gamabar di bawah ini.

Setelah di isikan node-node seperti gambar di atas, selanjutnya kita bisa mendengarkan irama dari node yang kita buat. Game ini sangat sederhana sekali tapi memberikan efekyang sangat luar biasa. Game ini sangat powerfull.


Berikut ini adalah coding programnya :

% Warning! The predicate play_sound is not working with Windows 95/98
% You will hear the sound only under Windows NT/XP/Vista

% This program is created by the
% students from 22-nd school in Sofia

?-
  G_Time=0.5,
  array(music,25,0),
  array(time,25,0.0),
  window(_,_,win_func(_),"Baron",0,100,600,200).

win_func(init) :-
  button(_,_,but1_func(), "Whole",30,120,50,30),
  button(_,_,but2_func(), "Half",90,120,40,30),
  button(_,_,but3_func(), "Quarter",140,120,60,30),
  button(_,_,but4_func(), "Eight",210,120,50,30),
  button(_,_,play_func(), "Play",500,120,50,30).

win_func(paint):-
  table(G_Time,Str),
  text_out(500,20,Str),
  pen(1,rgb(0,0,0)),
  line(30,50,562,50),
  line(30,60,562,60),
  line(30,70,562,70),
  line(30,80,562,80),
  line(30,90,562,90),
  pen(2,rgb(0,0,0)),
  bezier_line(50,80,50,70,75,70,75,80,
                    70,100,43,90,43,80,
                    43,70,70,50,70,35,
                    70,25,60,25,60,35),
  line(60,35,60,100),
  bezier_line(60,100,60,110,50,110,50,100),
  for(I,0,24),
  music(I) > 0,
  nota((I + 4)*20,music(I),time(I)),
  fail.

win_func(mouse_click(X,Y)):-
  X>80,X<560,
  Y>60,Y<100,
  X:= ((X+8)//20)*20,
  Y:= (Y//5)*5+1,
  (music(X//20 - 4) =:=0 ->
    music(X//20 - 4) :=Y,
    time(X//20 - 4):=G_Time,
    nota(X,Y,G_Time)
  else
    music(X//20 - 4):=0,
    update_window(_)
  ).

play_func(press):-
  for(I,0,24),
  Y is music(I),
  frequency(Y,F,_),
  play_sound(F,time(I)),
  fail.

but1_func(press):-
  G_Time :=2.0,
  text_out(500,20,"Whole  ").
but2_func(press):-
  G_Time :=1.0,
  text_out(500,20,"Half      ").
 but3_func(press):-
  G_Time :=0.5,
  text_out(500,20,"Quarter").
 but4_func(press):-
  G_Time :=0.25,
  text_out(500,20,"Eight     ").

table(2.0,"Whole").
table(1.0,"Half").
table(0.5,"Quarter").
table(0.25,"Eight").

nota(X,Y,T):-
  brush(rgb(0,0,0)),
  (T=<0.5->
    ellipse(X,Y,X+12,Y+9)
  else
    pen(1,rgb(0,0,0)),
    draw_arc(X,Y,X+12,Y+9,0,0,0,0)
  ),
  pen(2,rgb(0,0,0)),
  (T<2.0->
  (Y<70->
    line(X,Y+5,X,Y+30)
  else
    line(X+12,Y+5,X+12,Y - 20))
  ),
  (Y>95->
    line(X - 4,Y+5,X+16,Y+5)),
  (T=:=0.25->
  (Y<70->
    bezier_line(X,Y+30,X,Y+20,X - 10,Y+25,X - 10,Y+15)
  else
    bezier_line(X+12,Y - 20,X+12,Y - 10,X+22,Y - 15,X+22,Y - 5))
  ).
 
frequency(96,261,"do1").
frequency(91,293,"re").
frequency(86,329."mi").
frequency(81,349,"fa").
frequency(76,392,"sol").
frequency(71,440,"la").
frequency(66,494,"si").
frequency(61,523,"do2").


Output Game Node Music Baron :












Tidak ada komentar:

Posting Komentar