Shift C2 – Kelompok 2 :
1. Diyah Widiyasari
2. Dika Nugroho
3. M.Ramadhan
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
END COMPONENT;
BEGIN 2. Display_Vhd
i_M_BT : IN STD_LOGIC;
VGA_CLK => VGA_CLK,
i_K_BT : IN STD_LOGIC;
VGA_BLANK => VGA_BLANK
i_H_BT : IN STD_LOGIC;
VGA_R : OUT STD_LOGIC_VECTOR( 5 DOWNTO 0 );
); END PROCESS;
PORT MAP (
green <= green_color(7 DOWNTO 2) ; state lain yang akan kami jelaskan leih
PROCESS(red_on,green_on,blue_on,red,green,
blue)
BEGIN
LIBRARY IEEE; CONSTANT k_HALANG10 : INTEGER
USE IEEE.STD_LOGIC_1164.ALL; :=0;
USE IEEE.STD_LOGIC_ARITH.ALL; CONSTANT k_HALANG11 : INTEGER
USE IEEE.STD_LOGIC_UNSIGNED.ALL; :=100;
CONSTANT k_HALANG12 : INTEGER
ENTITY color_rom_vhd IS :=140;
PORT( CONSTANT k_HALANG13 : INTEGER
i_M_US : IN STD_LOGIC; -- atas :=350;
i_K_US : IN STD_LOGIC; -- bawah CONSTANT k_HALANG14 : INTEGER
i_H_US : IN STD_LOGIC; -- kanan :=390;
i_M_BT : IN STD_LOGIC; -- kiri CONSTANT k_HALANG15 : INTEGER
i_K_BT : IN STD_LOGIC; -- kecepatan :=640;
i_H_BT : IN STD_LOGIC; -- waktu` CONSTANT waktu_kiri : INTEGER :=0;
i_pixel_column : IN STD_LOGIC_VECTOR( 9 CONSTANT waktu_atas : INTEGER :=0;
DOWNTO 0 );
i_pixel_row : IN STD_LOGIC_VECTOR( 9 SHARED VARIABLE waktu_bawah : INTEGER
DOWNTO 0 ); :=20;
o_red : OUT STD_LOGIC_VECTOR( 7 SHARED VARIABLE waktu_kanan : INTEGER
DOWNTO 0 ); :=640;
o_green : OUT STD_LOGIC_VECTOR( 7
DOWNTO 0 ); ---MAKANAN1
o_blue : OUT STD_LOGIC_VECTOR( 7 SHARED VARIABLE makan_ki1 : INTEGER
DOWNTO 0 )); :=120;
END color_rom_vhd; SHARED VARIABLE makan_ka1 : INTEGER
:=130;
ARCHITECTURE behavioral OF color_rom_vhd SHARED VARIABLE makan_a1 : INTEGER
IS :=380;
SHARED VARIABLE makan_b1 : INTEGER
CONSTANT BATASBARIS : INTEGER := 479; :=390;
CONSTANT BATASKOLOM : INTEGER := 639; -- MAKANAN 2
SHARED VARIABLE makan_2ki : INTEGER
CONSTANT B_HALANG11 : INTEGER :=120;
:=420; --BAWAH SHARED VARIABLE makan_2ka : INTEGER
CONSTANT B_HALANG12 : INTEGER :=130;
:=370; --ATAS SHARED VARIABLE makan_2a1 : INTEGER
CONSTANT B_HALANG13 : INTEGER :=280;
:=140; --BAWAH SHARED VARIABLE makan_2b1 : INTEGER
CONSTANT B_HALANG14 : INTEGER :=290;
:=350; --ATAS --MAKANAN 3
CONSTANT B_HALANG21 : INTEGER SHARED VARIABLE makan_3ki : INTEGER
:=320; :=120;
CONSTANT B_HALANG22 : INTEGER SHARED VARIABLE makan_3ka : INTEGER
:=270; :=130;
CONSTANT B_HALANG31 : INTEGER SHARED VARIABLE makan_3a1 : INTEGER
:=220; :=180;
CONSTANT B_HALANG32 : INTEGER :=170; SHARED VARIABLE makan_3b1 : INTEGER
CONSTANT B_HALANG41 : INTEGER :=190;
:=120; --MAKANAN 4
CONSTANT B_HALANG42 : INTEGER
:=70; SHARED VARIABLE makan_4ki : INTEGER
:=370;
SHARED VARIABLE makan_4ka : INTEGER --MAKANAN 10
:=380; SHARED VARIABLE makan_10ki : INTEGER
SHARED VARIABLE makan_4a1 : INTEGER :=190;
:=380; SHARED VARIABLE makan_10ka : INTEGER
SHARED VARIABLE makan_4b1 : INTEGER :=200;
:=390; SHARED VARIABLE makan_10a1 : INTEGER
-- MAKANAN 5 :=340;
SHARED VARIABLE makan_5ki : INTEGER SHARED VARIABLE makan_10b1 : INTEGER
:=370; :=350;
SHARED VARIABLE makan_5ka : INTEGER --MAKANAN 11
:=380; SHARED VARIABLE makan_11ki : INTEGER
SHARED VARIABLE makan_5a1 : INTEGER :=220;
:=280; SHARED VARIABLE makan_11ka : INTEGER
SHARED VARIABLE makan_5b1 : INTEGER :=230;
:=290; SHARED VARIABLE makan_11a1 : INTEGER
--MAKANAN 6 :=340;
SHARED VARIABLE makan_6ki : INTEGER SHARED VARIABLE makan_11b1 : INTEGER
:=370; :=350;
SHARED VARIABLE makan_6ka : INTEGER --MAKANAN 12
:=380; SHARED VARIABLE makan_12ki : INTEGER
SHARED VARIABLE makan_6a1 : INTEGER :=420;
:=180; SHARED VARIABLE makan_12ka : INTEGER
SHARED VARIABLE makan_6b1 : INTEGER :=430;
:=190; SHARED VARIABLE makan_12a1 : INTEGER
--MAKANAN 7 :=340;
SHARED VARIABLE makan_7ki : INTEGER SHARED VARIABLE makan_12b1 : INTEGER
:=40; :=350;
SHARED VARIABLE makan_7ka : INTEGER --MAKANAN 13
:=50; SHARED VARIABLE makan_13ki : INTEGER
SHARED VARIABLE makan_7a1 : INTEGER :=460;
:=340; SHARED VARIABLE makan_13ka : INTEGER
SHARED VARIABLE makan_7b1 : INTEGER :=470;
:=350; SHARED VARIABLE makan_13a1 : INTEGER
--MAKANAN 8 :=340;
SHARED VARIABLE makan_8ki : INTEGER SHARED VARIABLE makan_13b1 : INTEGER
:=70; :=350;
SHARED VARIABLE makan_8ka : INTEGER
:=80; --MAKANAN 14
SHARED VARIABLE makan_8a1 : INTEGER SHARED VARIABLE makan_14ki : INTEGER
:=340; :=500;
SHARED VARIABLE makan_8b1 : INTEGER SHARED VARIABLE makan_14ka : INTEGER
:=350; :=510;
--MAKANAN 9 SHARED VARIABLE makan_14a1 : INTEGER
SHARED VARIABLE makan_9ki : INTEGER :=340;
:=160; SHARED VARIABLE makan_14b1 : INTEGER
SHARED VARIABLE makan_9ka : INTEGER :=350;
:=170;
SHARED VARIABLE makan_9a1 : INTEGER --MAKANAN 15
:=340; SHARED VARIABLE makan_15ki : INTEGER
SHARED VARIABLE makan_9b1 : INTEGER :=40;
:=350; SHARED VARIABLE makan_15ka : INTEGER
:=50; :=430;
SHARED VARIABLE makan_15a1 : INTEGER SHARED VARIABLE makan_20a1 : INTEGER
:=240; :=240;
SHARED VARIABLE makan_15b1 : INTEGER SHARED VARIABLE makan_20b1 : INTEGER
:=250; :=250;
--MAKANAN 16 --MAKANAN 21
SHARED VARIABLE makan_16ki : INTEGER SHARED VARIABLE makan_21ki : INTEGER
:=70; :=460;
SHARED VARIABLE makan_16ka : INTEGER SHARED VARIABLE makan_21ka : INTEGER
:=80; :=470;
SHARED VARIABLE makan_16a1 : INTEGER SHARED VARIABLE makan_21a1 : INTEGER
:=240; :=240;
SHARED VARIABLE makan_16b1 : INTEGER SHARED VARIABLE makan_21b1 : INTEGER
:=250; :=250;
--MAKANAN 17
SHARED VARIABLE makan_17ki : INTEGER --MAKANAN 22
:=160; SHARED VARIABLE makan_22ki : INTEGER
SHARED VARIABLE makan_17ka : INTEGER :=500;
:=170; SHARED VARIABLE makan_22ka : INTEGER
SHARED VARIABLE makan_17a1 : INTEGER :=510;
:=240; SHARED VARIABLE makan_22a1 : INTEGER
SHARED VARIABLE makan_17b1 : INTEGER :=240;
:=250; SHARED VARIABLE makan_22b1 : INTEGER
:=250;
--MAKANAN 18
SHARED VARIABLE makan_18ki : INTEGER
:=190; --MAKANAN 23
SHARED VARIABLE makan_18ka : INTEGER SHARED VARIABLE makan_23ki : INTEGER
:=200; :=70;
SHARED VARIABLE makan_18a1 : INTEGER SHARED VARIABLE makan_23ka : INTEGER
:=240; :=80;
SHARED VARIABLE makan_18b1 : INTEGER SHARED VARIABLE makan_23a1 : INTEGER
:=250; :=140;
SHARED VARIABLE makan_23b1 : INTEGER
--MAKANAN 19 :=150;
SHARED VARIABLE makan_19ki : INTEGER
:=220;
SHARED VARIABLE makan_19ka : INTEGER
:=230; --MAKANAN 24
SHARED VARIABLE makan_19a1 : INTEGER SHARED VARIABLE makan_24ki : INTEGER
:=240; :=190;
SHARED VARIABLE makan_19b1 : INTEGER SHARED VARIABLE makan_24ka : INTEGER
:=250; :=200;
SHARED VARIABLE makan_24a1 : INTEGER
--MAKANAN 20 :=140;
SHARED VARIABLE makan_20ki : INTEGER SHARED VARIABLE makan_24b1 : INTEGER
:=420; :=150;
SHARED VARIABLE makan_20ka : INTEGER
--WAKTU MAIN
--MAKANAN 25
SHARED VARIABLE makan_25ki : INTEGER IF clock40hz'event and clock40hz = '1' THEN
:=460; KECEPATAN_MAIN := 1;
SHARED VARIABLE makan_25ka : INTEGER IF i_K_BT = '0' THEN
:=470; KECEPATAN := 5;
SHARED VARIABLE makan_25a1 : INTEGER ELSE
:=140; KECEPATAN := 10;
SHARED VARIABLE makan_25b1 : INTEGER END IF;
:=150; END IF;
IF
B_KANAN > k_HALANG10 AND B_KIRI < END IF;
k_HALANG11 AND IF B_KIRI <= makan_10ka AND B_KANAN >=
B_ATAS < B_HALANG31 AND B_BAWAH > makan_10ka AND
B_HALANG32 THEN B_ATAS <= makan_10b1 AND B_BAWAH >=
B_KIRI := k_HALANG11 ; makan_10a1 THEN
B_KANAN := k_HALANG11 + 29 ; makan_10ki := -125;
makan_10ka := -130;
END IF; makan_10a1 := -385;
makan_10b1 := -390;
skor_kanan := skor_kanan+60;
IF B_KIRI <= 0 THEN
B_KIRI := 0;
B_KANAN := 29; END IF;
END IF; IF B_KIRI <= makan_11ka AND B_KANAN >=
makan_11ka AND
B_ATAS <= makan_11b1 AND B_BAWAH >=
--ARAH KIRI makan_11a1 THEN
IF B_KIRI <= makan_7ka AND B_KANAN >= makan_11ki := -125;
makan_7ka AND makan_11ka := -130;
B_ATAS <= makan_7b1 AND B_BAWAH >= makan_11a1 := -385;
makan_7a1 THEN makan_11b1 := -390;
makan_7ki := -125; skor_kanan := skor_kanan+60;
makan_7ka := -130;
makan_7a1 := -385; END IF;
makan_7b1 := -390; IF B_KIRI <= makan_15ka AND B_KANAN >=
skor_kanan := skor_kanan+60; makan_15ka AND
B_ATAS <= makan_15b1 AND B_BAWAH >=
END IF; makan_15a1 THEN
IF B_KIRI <= makan_8ka AND B_KANAN >= makan_15ki := -125;
makan_8ka AND makan_15ka := -130;
B_ATAS <= makan_8b1 AND B_BAWAH >= makan_15a1 := -385;
makan_8a1 THEN makan_15b1 := -390;
makan_8ki := -125; skor_kanan := skor_kanan+60;
makan_8ka := -130;
makan_8a1 := -385;
makan_8b1 := -390;
END IF; makan_19ka := -130;
IF B_KIRI <= makan_16ka AND B_KANAN >= makan_19a1 := -385;
makan_16ka AND makan_19b1 := -390;
skor_kanan := skor_kanan+60;
B_ATAS <= makan_16b1 AND B_BAWAH >=
makan_16a1 THEN
END IF;
begin
PROCESS(CLK)
if(count<div) then
count:=count+1;
if(DIVOUT='0') then
DIVOUT<='0';
elsif(DIVOUT='1') then
DIVOUT<='1';
end if;
Konsep game yang kami buat adalah ada dapat memakan makanan arah naik dan
sebuah karakter berbentuk kotak arah kiri namun untuk makan ke arah
ukurannya 40 pixel yang akan kami kanan dan bawah ternyata makanan nya
gerakan melewati penghalang dan tidak bisa kemakan atau tidak bisa hilang.
memakan makanan yang telah kita buat. Hal tesebut terjadi karena kami salah
dalam membuat kondisi karakter untuk
dan ketika karakter memakan mamakan makan ke arah kanan dan bawah.
maka petanda skor kita buat dalam sebuah
garis yang akan bertambah jika karakter Sebelumnya di program yang kami buat
memakan tersebut. Namun saat bermain jika batas karakter atas, bawah, kanan, kiri
kami memberikan batas waktu yang kami menyentuh batas makanan maka makanan
gambarkan dengan garis yang terus akan hilang (untuk hilang disini kami
berkurang disetiap kita bermaian. Lalu membuat makaan pindah posis ke ukuran
kami membuat juga makanan yang bisa min pixelnya sehingga makanan dapat
menambah waktu bermain . hilang
Kami membuat 2 kondisi yaitu menang Contohnya dapat dilihat di bawah ini :
dan kalah , yang dapat kami gambarakan
sebagai berikut IF B_ATAS <= makan_2b1 AND B_KIRI <=
Kondisi menang : kondisi menag terjadi makan_2ka AND B_KANAN >= makan_2ki AND
ketika karakter dapat memamakan makan B_BAWAH >= makan_2a1 THEN
sampai memenuhi garis skor , jika garis
makan_2ki := -125;
skor sudah penuh maka game di anggap
menang , sebelumnya kelompok kami makan_2ka := -130;
ingin membuat kondisi jika karakter
makan_2a1 := -385;
menang maka akan ada tampilan pada
layar namun karena waktu yang tidak makan_2b1 := -390;
mencukupi maka kelompok kami belum
sempat membuat tampilan menang
Dibawah ini beberapa program yang kami Setelah dilakukan percobaan ini maka
perbahurui : didapat :
Referensi
ENTITY color_rom_vhd IS
PORT(
i_M_US : IN STD_LOGIC; -- atas
i_K_US : IN STD_LOGIC; -- bawah
i_H_US : IN STD_LOGIC; -- kanan
i_M_BT : IN STD_LOGIC; -- kiri
i_K_BT : IN STD_LOGIC; -- kecepatan
i_H_BT : IN STD_LOGIC; -- waktu`
i_pixel_column : IN STD_LOGIC_VECTOR( 9 DOWNTO 0 );
i_pixel_row : IN STD_LOGIC_VECTOR( 9 DOWNTO 0 );
o_red : OUT STD_LOGIC_VECTOR( 7 DOWNTO 0 );
o_green : OUT STD_LOGIC_VECTOR( 7 DOWNTO 0 );
o_blue : OUT STD_LOGIC_VECTOR( 7 DOWNTO 0 ));
END color_rom_vhd;
---MAKANAN1
SHARED VARIABLE makan_ki1 : INTEGER :=120;
SHARED VARIABLE makan_ka1 : INTEGER :=130;
SHARED VARIABLE makan_a1 : INTEGER :=380;
SHARED VARIABLE makan_b1 : INTEGER :=390;
-- MAKANAN 2
SHARED VARIABLE makan_2ki : INTEGER :=120;
SHARED VARIABLE makan_2ka : INTEGER :=130;
SHARED VARIABLE makan_2a1 : INTEGER :=280;
SHARED VARIABLE makan_2b1 : INTEGER :=290;
--MAKANAN 3
SHARED VARIABLE makan_3ki : INTEGER :=120;
SHARED VARIABLE makan_3ka : INTEGER :=130;
SHARED VARIABLE makan_3a1 : INTEGER :=180;
SHARED VARIABLE makan_3b1 : INTEGER :=190;
--MAKANAN 4
--MAKANAN 20
SHARED VARIABLE makan_20ki : INTEGER :=420;
SHARED VARIABLE makan_20ka : INTEGER :=430;
SHARED VARIABLE makan_20a1 : INTEGER :=240;
SHARED VARIABLE makan_20b1 : INTEGER :=250;
--MAKANAN 21
SHARED VARIABLE makan_21ki : INTEGER :=460;
SHARED VARIABLE makan_21ka : INTEGER :=470;
SHARED VARIABLE makan_21a1 : INTEGER :=240;
SHARED VARIABLE makan_21b1 : INTEGER :=250;
--MAKANAN 22
SHARED VARIABLE makan_22ki : INTEGER :=500;
SHARED VARIABLE makan_22ka : INTEGER :=510;
SHARED VARIABLE makan_22a1 : INTEGER :=240;
SHARED VARIABLE makan_22b1 : INTEGER :=250;
--MAKANAN 23
SHARED VARIABLE makan_23ki : INTEGER :=70;
SHARED VARIABLE makan_23ka : INTEGER :=80;
SHARED VARIABLE makan_23a1 : INTEGER :=140;
SHARED VARIABLE makan_23b1 : INTEGER :=150;
--MAKANAN 24
SHARED VARIABLE makan_24ki : INTEGER :=190;
SHARED VARIABLE makan_24ka : INTEGER :=200;
SHARED VARIABLE makan_24a1 : INTEGER :=140;
SHARED VARIABLE makan_24b1 : INTEGER :=150;
--MAKANAN 25
SHARED VARIABLE makan_25ki : INTEGER :=460;
SHARED VARIABLE makan_25ka : INTEGER :=470;
SHARED VARIABLE makan_25a1 : INTEGER :=140;
SHARED VARIABLE makan_25b1 : INTEGER :=150;
CONSTANT finish1 : INTEGER :=0;
CONSTANT finish2 : INTEGER :=30;
END IF;
IF ((i_pixel_column >= k_HALANG12) AND (i_pixel_column <= B_HALANG13) AND
(i_pixel_row < B_HALANG11) AND (i_pixel_row > B_HALANG12))
THEN
M_TF1 <= '1';
END IF;
IF ((i_pixel_column > k_HALANG14) AND (i_pixel_column < k_HALANG15) AND
(i_pixel_row < B_HALANG11) AND (i_pixel_row > B_HALANG12))
THEN
M_TF1 <= '1';
END IF;
--penghalang 2
IF ((i_pixel_column > 0) AND (i_pixel_column < 100) AND
(i_pixel_row < B_HALANG21) AND (i_pixel_row > B_HALANG22))
THEN
M_TF1 <= '1';
END IF;
IF ((i_pixel_column > 140) AND (i_pixel_column < 350) AND
(i_pixel_row < B_HALANG21) AND (i_pixel_row > B_HALANG22))
THEN
M_TF1 <= '1';
END IF;
IF ((i_pixel_column > 390) AND (i_pixel_column < 640) AND
(i_pixel_row < B_HALANG21) AND (i_pixel_row > B_HALANG22))
THEN
M_TF1 <= '1';
END IF;
--penghalang 3
IF ((i_pixel_column > 0) AND (i_pixel_column < 100) AND
(i_pixel_row < B_HALANG11) AND (i_pixel_row > B_HALANG12))
THEN
M_TF1 <= '1';
END IF;
IF ((i_pixel_column > 140) AND (i_pixel_column < 350) AND
(i_pixel_row < B_HALANG11) AND (i_pixel_row > B_HALANG12))
THEN
M_TF1 <= '1';
END IF;
IF ((i_pixel_column > 390) AND (i_pixel_column < 640) AND
(i_pixel_row < B_HALANG11) AND (i_pixel_row > B_HALANG12))
THEN
M_TF1 <= '1';
END IF;
--penghalang 3
IF ((i_pixel_column > 0) AND (i_pixel_column < 100) AND
(i_pixel_row < B_HALANG31) AND (i_pixel_row > B_HALANG32))
THEN
M_TF1 <= '1';
END IF;
IF ((i_pixel_column > 140) AND (i_pixel_column < 350) AND
(i_pixel_row < B_HALANG31) AND (i_pixel_row > B_HALANG32))
THEN
M_TF1 <= '1';
END IF;
IF ((i_pixel_column > 390) AND (i_pixel_column < 640) AND
(i_pixel_row < B_HALANG31) AND (i_pixel_row > B_HALANG32))
THEN
M_TF1 <= '1';
END IF;
--karakter
--MAKANAN
IF ((i_pixel_column > makan_ki1 ) AND (i_pixel_column < makan_ka1) AND
(i_pixel_row > makan_a1) AND (i_pixel_row < makan_b1))
THEN
M_TF1 <= '1';
END IF;
--2
IF ((i_pixel_column > makan_2ki ) AND (i_pixel_column < makan_2ka) AND
(i_pixel_row > makan_2a1) AND (i_pixel_row < makan_2b1))
THEN
M_TF1 <= '1';
END IF;
--3
IF ((i_pixel_column > makan_3ki ) AND (i_pixel_column < makan_3ka) AND
(i_pixel_row > makan_3a1) AND (i_pixel_row < makan_3b1))
THEN
M_TF1 <= '1';
END IF;
--4
IF ((i_pixel_column > makan_4ki ) AND (i_pixel_column < makan_4ka) AND
(i_pixel_row > makan_4a1) AND (i_pixel_row < makan_4b1))
THEN
M_TF1 <= '1';
END IF;
--5
IF ((i_pixel_column > makan_5ki ) AND (i_pixel_column < makan_5ka) AND
(i_pixel_row > makan_5a1) AND (i_pixel_row < makan_5b1))
THEN
M_TF1 <= '1';
END IF;
--6
IF ((i_pixel_column > makan_6ki ) AND (i_pixel_column < makan_6ka) AND
(i_pixel_row > makan_6a1) AND (i_pixel_row < makan_6b1))
THEN
M_TF1 <= '1';
END IF;
--7
IF ((i_pixel_column > makan_7ki ) AND (i_pixel_column < makan_7ka) AND
(i_pixel_row > makan_7a1) AND (i_pixel_row < makan_7b1))
THEN
M_TF1 <= '1';
END IF;
--8
IF ((i_pixel_column > makan_8ki ) AND (i_pixel_column < makan_8ka) AND
(i_pixel_row > makan_8a1) AND (i_pixel_row < makan_8b1))
THEN
M_TF1 <= '1';
END IF:
--9
IF ((i_pixel_column > makan_9ki ) AND (i_pixel_column < makan_9ka) AND
(i_pixel_row > makan_9a1) AND (i_pixel_row < makan_9b1))
THEN
M_TF1 <= '1';
END IF;
--10
IF ((i_pixel_column > makan_10ki ) AND (i_pixel_column < makan_10ka) AND
(i_pixel_row > makan_10a1) AND (i_pixel_row < makan_10b1))
THEN
M_TF1 <= '1';
END IF;
--11
IF ((i_pixel_column > makan_11ki ) AND (i_pixel_column < makan_11ka) AND
(i_pixel_row > makan_11a1) AND (i_pixel_row < makan_11b1))
THEN
M_TF1 <= '1';
END IF;
--12
IF ((i_pixel_column > makan_12ki ) AND (i_pixel_column < makan_12ka) AND
(i_pixel_row > makan_12a1) AND (i_pixel_row < makan_12b1))
THEN
M_TF1 <= '1';
END IF;
--13
IF ((i_pixel_column > makan_13ki ) AND (i_pixel_column < makan_13ka) AND
(i_pixel_row > makan_13a1) AND (i_pixel_row < makan_13b1))
THEN
M_TF1 <= '1';
END IF;
--14
IF ((i_pixel_column > makan_14ki ) AND (i_pixel_column < makan_14ka) AND
(i_pixel_row > makan_14a1) AND (i_pixel_row < makan_14b1))
THEN
M_TF1 <= '1';
END IF;
--15
IF ((i_pixel_column > makan_15ki ) AND (i_pixel_column < makan_15ka) AND
(i_pixel_row > makan_15a1) AND (i_pixel_row < makan_15b1))
THEN
M_TF1 <= '1';
END IF;
--16
IF ((i_pixel_column > makan_16ki ) AND (i_pixel_column < makan_16ka) AND
(i_pixel_row > makan_16a1) AND (i_pixel_row < makan_16b1))
THEN
M_TF1 <= '1';
END IF;
--17
IF ((i_pixel_column > makan_17ki ) AND (i_pixel_column < makan_17ka) AND
(i_pixel_row > makan_17a1) AND (i_pixel_row < makan_17b1))
THEN
M_TF1 <= '1';
END IF;
--18
IF ((i_pixel_column > makan_18ki ) AND (i_pixel_column < makan_18ka) AND
(i_pixel_row > makan_18a1) AND (i_pixel_row < makan_18b1))
THEN
M_TF1 <= '1';
END IF;
--19
IF ((i_pixel_column > makan_19ki ) AND (i_pixel_column < makan_19ka) AND
(i_pixel_row > makan_19a1) AND (i_pixel_row < makan_19b1))
THEN
M_TF1 <= '1';
END IF;
--20
IF ((i_pixel_column > makan_20ki ) AND (i_pixel_column < makan_20ka) AND
(i_pixel_row > makan_20a1) AND (i_pixel_row < makan_20b1))
THEN
M_TF1 <= '1';
END IF;
--21
IF ((i_pixel_column > makan_21ki ) AND (i_pixel_column < makan_21ka) AND
(i_pixel_row > makan_21a1) AND (i_pixel_row < makan_21b1))
THEN
M_TF1 <= '1';
END IF;
--22
IF ((i_pixel_column > makan_22ki ) AND (i_pixel_column < makan_22ka) AND
(i_pixel_row > makan_22a1) AND (i_pixel_row < makan_22b1))
THEN
M_TF1 <= '1';
END IF;
--23
IF ((i_pixel_column > makan_23ki ) AND (i_pixel_column < makan_23ka) AND
(i_pixel_row > makan_23a1) AND (i_pixel_row < makan_23b1))
THEN
M_TF1 <= '1';
END IF;
--24
IF ((i_pixel_column > makan_24ki ) AND (i_pixel_column < makan_24ka) AND
(i_pixel_row > makan_24a1) AND (i_pixel_row < makan_24b1))
THEN
M_TF1 <= '1';
END IF;
--25
IF ((i_pixel_column > makan_25ki ) AND (i_pixel_column < makan_25ka) AND
(i_pixel_row > makan_25a1) AND (i_pixel_row < makan_25b1))
THEN
M_TF1 <= '1';
END IF;
----warna
IF M_TF1 = '1' THEN o_red <= X"E8"; o_green <= X"4C"; o_blue <= X"3C";
ELSIF M_TF1 = '0' THEN o_red <= X"00"; o_green <= X"00"; o_blue <= X"00";
END IF;
B_ATAS := B_ATAS;
B_BAWAH := B_BAWAH;
END IF;
IF clock40hz'event and clock40hz = '1' THEN
waktu_kanan := waktu_kanan - KECEPATAN_MAIN; ---Arah Naik
END IF;
IF waktu_kanan <= K_halang10 THEN
KECEPATAN := 0;
KECEPATAN_MAIN := 0;
END IF;
--kontrol karakter
IF clock40hz'event and clock40hz = '1' AND i_M_US = '0' AND i_K_US = '1' AND i_H_US = '1' AND i_M_BT = '1' THEN
B_ATAS := B_ATAS - KECEPATAN; ---Arah Naik
B_BAWAH := B_BAWAH - KECEPATAN;
--PENGHALANG 1
IF
B_ATAS < B_HALANG11 AND B_BAWAH > B_HALANG12 AND
B_KIRI < k_HALANG11 AND B_KANAN > k_HALANG10 THEN
B_ATAS := B_HALANG11;
B_BAWAH := B_HALANG11 + 29;
END IF;
IF
B_ATAS < B_HALANG11 AND B_BAWAH > B_HALANG12 AND
B_KIRI < k_HALANG13 AND B_KANAN > k_HALANG12 THEN
B_ATAS := B_HALANG11;
B_BAWAH := B_HALANG11 + 29;
END IF;
IF
B_ATAS < B_HALANG11 AND B_BAWAH > B_HALANG12 AND
B_KIRI < k_HALANG15 AND B_KANAN > k_HALANG14 THEN
B_ATAS := B_HALANG11;
B_BAWAH := B_HALANG11 + 29;
END IF;
--PENGHALANG 2
IF B_ATAS < B_HALANG21 AND B_BAWAH > B_HALANG22 AND
B_KIRI < k_HALANG11 AND B_KANAN > k_HALANG10 THEN
B_ATAS := B_HALANG21;
B_BAWAH := B_HALANG21 + 29;
END IF;
IF
B_ATAS < B_HALANG21 AND B_BAWAH > B_HALANG22 AND
B_KIRI < k_HALANG13 AND B_KANAN > k_HALANG12 THEN
B_ATAS := B_HALANG21;
B_BAWAH := B_HALANG21 + 29;
END IF;
IF
B_ATAS < B_HALANG21 AND B_BAWAH > B_HALANG22 AND
B_KIRI < k_HALANG15 AND B_KANAN > k_HALANG14 THEN
B_ATAS := B_HALANG21;
B_BAWAH := B_HALANG21 + 29; END IF;
--PENGHALANG 3
IF
B_ATAS < B_HALANG31 AND B_BAWAH > B_HALANG32 AND
B_KIRI < k_HALANG11 AND B_KANAN > k_HALANG10 THEN
B_ATAS := B_HALANG31;
B_BAWAH := B_HALANG31 + 29;
END IF;
IF
B_ATAS < B_HALANG31 AND B_BAWAH > B_HALANG32 AND
B_KIRI < k_HALANG13 AND B_KANAN > k_HALANG12 THEN
B_ATAS := B_HALANG31;
B_BAWAH := B_HALANG31 + 29;
END IF;
IF
B_ATAS < B_HALANG31 AND B_BAWAH > B_HALANG32 AND
B_KIRI < k_HALANG15 AND B_KANAN > k_HALANG14 THEN
B_ATAS := B_HALANG31;
B_BAWAH := B_HALANG31 + 29;
END IF;
IF B_ATAS <= 0 THEN
B_ATAS := 0;
B_BAWAH := 29;
END IF;
--ARAH ATAS
IF B_ATAS <= makan_b1 AND B_KIRI <= makan_ka1 AND B_KANAN >= makan_ki1 AND B_BAWAH >=
makan_a1 THEN
makan_ki1 := -125;
makan_ka1 := -130;
makan_a1 := -385;
makan_b1 := -390;
skor_kanan := skor_kanan+60;
waktu_kanan := waktu_kanan+200;
END IF;
IF B_ATAS <= makan_2b1 AND B_KIRI <= makan_2ka AND B_KANAN >= makan_2ki AND B_BAWAH >=
makan_2a1 THEN
makan_2ki := -125;
makan_2ka := -130;
makan_2a1 := -385;
makan_2b1 := -390;
skor_kanan := skor_kanan+60;
END IF;
IF B_ATAS <= makan_3b1 AND B_KIRI <= makan_3ka AND B_KANAN >= makan_3ki AND B_BAWAH >=
makan_3a1 THEN
makan_3ki := -125;
makan_3ka := -130;
makan_3a1 := -385;
makan_3b1 := -390;
skor_kanan := skor_kanan+60;
END IF;
IF B_ATAS <= makan_4b1 AND B_KIRI <= makan_4ka AND B_KANAN >= makan_4ki AND
B_BAWAH >= makan_4a1 THEN
makan_4ki := -125;
makan_4ka := -130;
makan_4a1 := -385;
makan_4b1 := -390;
skor_kanan := skor_kanan+60;
END IF;
IF B_ATAS <= makan_5b1 AND B_KIRI <= makan_5ka AND B_KANAN >= makan_5ki AND B_BAWAH >=
makan_5a1 THEN
makan_5ki := -125;
makan_5ka := -130;
makan_5a1 := -385;
makan_5b1 := -390;
skor_kanan := skor_kanan+60;
END IF;
IF B_ATAS <= makan_6b1 AND B_KIRI <= makan_6ka AND B_KANAN >= makan_6ki AND B_BAWAH >=
makan_6a1 THEN
makan_6ki := -125;
makan_6ka := -130;
makan_6a1 := -385;
makan_6b1 := -390;
skor_kanan := skor_kanan+60;
END IF;
ELSIF clock40hz'event and clock40hz = '1' AND i_M_US = '1' AND i_K_US = '0' AND i_H_US = '1' AND i_M_BT = '1'
THEN
B_ATAS := B_ATAS + KECEPATAN; ---Arah Turun
B_BAWAH := B_BAWAH + KECEPATAN;
--PENGHALANG1
IF
B_BAWAH > B_HALANG12 AND B_ATAS < B_HALANG11 AND
B_KIRI < k_HALANG11 AND B_KANAN > k_HALANG10 THEN
B_BAWAH := B_HALANG12 ;
B_ATAS := B_HALANG12 - 29 ;
END IF;
IF
B_BAWAH > B_HALANG12 AND B_ATAS < B_HALANG11 AND
B_KIRI < k_HALANG13 AND B_KANAN > k_HALANG12 THEN
B_BAWAH := B_HALANG12 ;
B_ATAS := B_HALANG12 - 29 ;
END IF;
IF
B_BAWAH > B_HALANG12 AND B_ATAS < B_HALANG11 AND
B_KIRI < k_HALANG15 AND B_KANAN > k_HALANG14 THEN
B_BAWAH := B_HALANG12 ;
B_ATAS := B_HALANG12 - 29 ;
END IF;
--PENGHALANG 2
IF
B_BAWAH > B_HALANG22 AND B_ATAS < B_HALANG21 AND
B_KIRI < k_HALANG11 AND B_KANAN > k_HALANG10 THEN
B_BAWAH := B_HALANG22 ;
B_ATAS := B_HALANG22 - 29 ;
END IF;
IF
B_BAWAH > B_HALANG22 AND B_ATAS < B_HALANG21 AND
B_KIRI < k_HALANG13 AND B_KANAN > k_HALANG12 THEN
B_BAWAH := B_HALANG22 ;
B_ATAS := B_HALANG22 - 29 ;
END IF;
IF
B_BAWAH > B_HALANG22 AND B_ATAS < B_HALANG21 AND
B_KIRI < k_HALANG15 AND B_KANAN > k_HALANG14 THEN
B_BAWAH := B_HALANG22 ;
B_ATAS := B_HALANG22 - 29 ;
END IF;
--PENGHALANG 3
IF
B_BAWAH > B_HALANG32 AND B_ATAS < B_HALANG31 AND
B_KIRI < k_HALANG11 AND B_KANAN > k_HALANG10 THEN
B_BAWAH := B_HALANG32 ;
B_ATAS := B_HALANG32 - 29 ;
END IF;
IF
B_BAWAH > B_HALANG32 AND B_ATAS < B_HALANG31 AND
B_KIRI < k_HALANG13 AND B_KANAN > k_HALANG12 THEN
B_BAWAH := B_HALANG32 ;
B_ATAS := B_HALANG32 - 29 ;
END IF;
IF
B_BAWAH > B_HALANG32 AND B_ATAS < B_HALANG31 AND
B_KIRI < k_HALANG15 AND B_KANAN > k_HALANG14 THEN
B_BAWAH := B_HALANG32 ;
B_ATAS := B_HALANG32 - 29 ;
END IF;
IF B_BAWAH >= 479 THEN
B_ATAS := 479 -29;
B_BAWAH := 479;
END IF;
END IF;
IF B_BAWAH >= makan_2a1 AND B_KIRI >= makan_2ka AND B_KANAN >= makan_2ki AND B_ATAS <=
makan_2b1 THEN
makan_2ki := -125;
makan_2ka := -130;
makan_2a1 := -385;
makan_2b1 := -390;
skor_kanan := skor_kanan+60;
END IF;
IF B_BAWAH >= makan_3a1 AND B_KIRI >= makan_3ka AND B_KANAN >= makan_3ki AND B_ATAS <=
makan_3b1 THEN
makan_3ki := -125;
makan_3ka := -130;
makan_3a1 := -385;
makan_3b1 := -390;
skor_kanan := skor_kanan+60;
END IF;
IF B_BAWAH >= makan_4a1 AND B_KIRI >= makan_4ka AND B_KANAN >= makan_4ki THEN
makan_4ki := -125;
makan_4ka := -130;
makan_4a1 := -385;
makan_4b1 := -390;
skor_kanan := skor_kanan+60;
END IF;
IF B_BAWAH >= makan_5a1 AND B_KIRI >= makan_5ka AND B_KANAN >= makan_5ki THEN
makan_5ki := -125;
makan_5ka := -130;
makan_5a1 := -385;
makan_5b1 := -390;
skor_kanan := skor_kanan+60;
END IF;
IF B_BAWAH >= makan_6b1 AND B_KIRI >= makan_6ka AND B_KANAN >= makan_6ki THEN
makan_6ki := -125;
makan_6ka := -130;
makan_6a1 := -385;
makan_6b1 := -390;
skor_kanan := skor_kanan+60;
END IF;
--kanan
ELSIF clock40hz'event and clock40hz = '1' AND i_M_US = '1' AND i_K_US = '1' AND i_H_US = '0' AND i_M_BT = '1' THEN
B_KANAN := B_KANAN + KECEPATAN; ---Arah kanan
B_KIRI := B_KIRI + KECEPATAN;
--PENGHALANG 1
IF
B_KANAN > k_HALANG12 AND B_KIRI < k_HALANG13 AND
B_ATAS < B_HALANG11 AND B_BAWAH > B_HALANG12 THEN
B_KANAN := k_HALANG12 ;
B_KIRI := k_HALANG12 - 29 ;
END IF;
IF
B_KANAN > k_HALANG14 AND B_KIRI < k_HALANG15 AND
B_ATAS < B_HALANG11 AND B_BAWAH > B_HALANG12 THEN
B_KANAN := k_HALANG14 ;
B_KIRI := k_HALANG14 - 29 ;
END IF;
--PENGHALANG 2
IF
B_KANAN > k_HALANG12 AND B_KIRI < k_HALANG13 AND
B_ATAS < B_HALANG21 AND B_BAWAH > B_HALANG22 THEN
B_KANAN := k_HALANG12 ;
B_KIRI := k_HALANG12 - 29 ;
END IF;
IF
B_KANAN > k_HALANG14 AND B_KIRI < k_HALANG15 AND
B_ATAS < B_HALANG21 AND B_BAWAH > B_HALANG22 THEN
B_KANAN := k_HALANG14 ;
B_KIRI := k_HALANG14 - 29 ;
END IF;
--PENGHALANG 3
IF
B_KANAN > k_HALANG12 AND B_KIRI < k_HALANG13 AND
B_ATAS < B_HALANG31 AND B_BAWAH > B_HALANG32 THEN
B_KANAN := k_HALANG12 ;
B_KIRI := k_HALANG12 - 29 ;
END IF;
IF
B_KANAN > k_HALANG14 AND B_KIRI < k_HALANG15 AND
B_ATAS < B_HALANG31 AND B_BAWAH > B_HALANG32 THEN
B_KANAN := k_HALANG14 ;
B_KIRI := k_HALANG14 - 29 ;
END IF;
IF
B_KANAN >k_HALANG12 AND B_KIRI < k_HALANG13 AND
B_ATAS < B_HALANG21 AND B_BAWAH > B_HALANG22 THEN
B_KIRI := k_HALANG13 ;
B_KANAN := k_HALANG13 + 29 ;
END IF;
IF
B_KANAN > k_HALANG10 AND B_KIRI < k_HALANG11 AND
B_ATAS < B_HALANG21 AND B_BAWAH > B_HALANG22 THEN
B_KIRI := k_HALANG11 ;
B_KANAN := k_HALANG11 + 29 ;
END IF;
--PENGHALANG 3
IF
B_KANAN >k_HALANG12 AND B_KIRI < k_HALANG13 AND
B_ATAS < B_HALANG31 AND B_BAWAH > B_HALANG32 THEN
B_KIRI := k_HALANG13 ;
B_KANAN := k_HALANG13 + 29 ;
END IF;
IF
B_KANAN > k_HALANG10 AND B_KIRI < k_HALANG11 AND
B_ATAS < B_HALANG31 AND B_BAWAH > B_HALANG32 THEN
B_KIRI := k_HALANG11 ;
B_KANAN := k_HALANG11 + 29 ;
END IF;
--ARAH KIRI
IF B_KIRI <= makan_7ka AND B_KANAN >= makan_7ka AND
B_ATAS <= makan_7b1 AND B_BAWAH >= makan_7a1 THEN
makan_7ki := -125;
makan_7ka := -130;
makan_7a1 := -385;
makan_7b1 := -390;
skor_kanan := skor_kanan+60;
END IF;
IF B_KIRI <= makan_8ka AND B_KANAN >= makan_8ka AND
B_ATAS <= makan_8b1 AND B_BAWAH >= makan_8a1 THEN
makan_8ki := -125;
makan_8ka := -130;
makan_8a1 := -385;
makan_8b1 := -390;
skor_kanan := skor_kanan+60;
END IF;
IF B_KIRI <= makan_9ka AND B_KANAN >= makan_9ka AND
B_ATAS <= makan_9b1 AND B_BAWAH >= makan_9a1 THEN
makan_9ki := -125;
makan_9ka := -130;
makan_9a1 := -385;
makan_9b1 := -390;
skor_kanan := skor_kanan+60;
END IF;
IF B_KIRI <= makan_10ka AND B_KANAN >= makan_10ka AND
B_ATAS <= makan_10b1 AND B_BAWAH >= makan_10a1 THEN
makan_10ki := -125;
makan_10ka := -130;
makan_10a1 := -385;
makan_10b1 := -390;
skor_kanan := skor_kanan+60;
END IF;
IF B_KIRI <= makan_11ka AND B_KANAN >= makan_11ka AND
B_ATAS <= makan_11b1 AND B_BAWAH >= makan_11a1 THEN
makan_11ki := -125;
makan_11ka := -130;
makan_11a1 := -385;
makan_11b1 := -390;
skor_kanan := skor_kanan+60;
END IF;
IF B_KIRI <= makan_15ka AND B_KANAN >= makan_15ka AND
B_ATAS <= makan_15b1 AND B_BAWAH >= makan_15a1 THEN
makan_15ki := -125;
makan_15ka := -130;
makan_15a1 := -385;
makan_15b1 := -390;
skor_kanan := skor_kanan+60;
END IF;
IF B_KIRI <= makan_16ka AND B_KANAN >= makan_16ka AND
B_ATAS <= makan_16b1 AND B_BAWAH >= makan_16a1 THEN
makan_16ki := -125;
makan_16ka := -130;
makan_16a1 := -385;
makan_16b1 := -390;
skor_kanan := skor_kanan+60;
END IF;
IF B_KIRI <= makan_17ka AND B_KANAN >= makan_17ka AND
B_ATAS <= makan_17b1 AND B_BAWAH >= makan_17a1 THEN
makan_17ki := -125;
makan_17ka := -130;
makan_17a1 := -385;
makan_17b1 := -390;
skor_kanan := skor_kanan+60;
END IF;
IF B_KIRI <= makan_18ka AND B_KANAN >= makan_18ka AND
B_ATAS <= makan_18b1 AND B_BAWAH >= makan_18a1 THEN
makan_18ki := -125;
makan_18ka := -130;
makan_18a1 := -385;
makan_18b1 := -390;
skor_kanan := skor_kanan+60;
END IF;
END IF;
END IF;
IF B_KIRI <= makan_24ka AND B_KANAN <= makan_24ka AND
B_ATAS <= makan_24b1 AND B_BAWAH >= makan_24a1 THEN
makan_24ki := -125;
makan_24ka := -130;
makan_24a1 := -385;
makan_24b1 := -390;
skor_kanan := skor_kanan+60;
END IF;
ELSE
B_KIRI := B_KIRI;
B_KANAN := B_KANAN;
B_BAWAH := B_BAWAH;
B_ATAS := B_ATAS;
END IF;
END PROCESS;
tempik : clockdiv
PORT MAP (
CLK => i_H_BT,
DIVOUT => clock40hz
);
END behavioral;