Im кодирования змея игру в VHDL, используя DE2-115 FPGA от Altera. Я подключил FPGA к монитору, используя протокол VGA, чтобы показать игру.игра Snake с помощью FPGA в VHDL
У меня есть проблема, чтобы показать змею и переместить его вокруг монитора со всем нажимным дном (ПЛИС имеет 4, вверх/вниз/влево/вправо)
В коде используются SQ_X1 и SQ_Y1, чтобы делать движение каждый момент, когда нижнее дно находится в низком состоянии.
Есть ли какой-либо другой способ сделать движение ? без прессования ни одного дна (с петлей или что-то в этом роде) и до изменение направления с нижним нажатием, чтобы имитировать движение змеи?
ARCHITECTURE behavior OF hw_image_generator IS
SIGNAL SQ_X1,SQ_Y1: INTEGER RANGE 0 TO 1688:=400; --initial position X
SIGNAL SQ_X2,SQ_Y2: INTEGER RANGE 0 TO 1688:=600; --initial position Y
SIGNAL DRAW: STD_LOGIC;
BEGIN
SQ(column,row,SQ_X1,SQ_Y1,DRAW); -- function that print a square (head of snake with SQ variables)
PROCESS(disp_ena, row, column, down, up, left, right)
BEGIN
IF(disp_ena = '1') THEN --display time
IF (column=19 or column=1901 or row=19 or row=1181) THEN -- print the border
red <= (OTHERS => '1');
green <= (OTHERS => '0');
blue <= (OTHERS => '0');
ELSE
red <= (OTHERS => '0');
green <= (OTHERS => '0');
blue <= (OTHERS => '0');
END IF;
IF (DRAW = '1') THEN -- it comes from a package that print a square (head of snake)
red <= (OTHERS => '1');
green <= (OTHERS => '1');
blue <= (OTHERS => '1');
END IF;
--up, down right and left are input of FPGA (push bottom)
--SQs are the current postions of X and Y and the add is to make the movement
IF(up='0' AND down='1' AND right='1' AND left='1')THEN
IF (SQ_X1-40 > 20) THEN
SQ_X1<=SQ_X1-40;
END IF;
END IF;
IF(up='1' AND down='0' AND right='1' AND left='1')THEN
IF (SQ_X1+40 < 1180) THEN
SQ_X1<=SQ_X1+40;
END IF;
END IF;
IF(tup='1' AND down='1' AND right='0' AND left='1')THEN
IF (SQ_Y1+40 < 1900) THEN
SQ_Y1<=SQ_Y1+40;
END IF;
END IF;
IF(up='1' AND down='1' AND right='1' AND left='0')THEN
IF (SQ_Y1-40 > 20) THEN
SQ_Y1<=SQ_Y1-40;
END IF;
END IF;
END IF;
END PROCESS;
END BEHAVIOR;
У этого дезина, похоже, нет часов !? Как он должен работать без часов? Вы моделировали свой код? – Paebbels
Привет, Паббельс! часы находятся в другом модуле, которые обеспечивают текущую позицию строки и столбца, поэтому в этом модуле не нужны часы. – Beaver
и извините за орфографию Бен Фойгт! Я все еще изучаю английский язык! XD – Beaver