Advertisement
ForcaDz

code score

Dec 3rd, 2023
512
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 12.65 KB | None | 0 0
  1.  
  2. library IEEE;
  3. use IEEE.STD_LOGIC_1164.ALL;
  4. use IEEE.STD_LOGIC_UNSIGNED.ALL;
  5. use work.pong_pack.ALL;
  6.  
  7. entity objects is
  8.     Port (  clk25   : in  STD_LOGIC;                                -- Horloge 25 MHz
  9.             clk_acc     : in std_logic;                             -- Horloge 25 Hz (Pour l'Accéléromètre)
  10.                 reset   : in  STD_LOGIC;                                -- Reset Asynchrone
  11.                
  12.                 -- SIGNAUX DU CTRL VGA
  13.                 endframe : in  STD_LOGIC;                           -- Signal de Fin de l'Image Visible
  14.                 xpos : in  STD_LOGIC_VECTOR (9 downto 0);       -- Coordonnee X du Pixel Courant
  15.                 ypos : in  STD_LOGIC_VECTOR (9 downto 0);       -- Coordonnee Y du Pixel Courant
  16.                
  17.                 -- SIGNAUX ENCODEUR ROTATIF
  18.                 own_left: in std_logic;                             -- Commande Deplacement Gauche Carte
  19.                 own_right: in std_logic;                            -- Commande Deplacement Droite Carte
  20.                 other_left: in std_logic;                           -- Commande Deplacement Gauche Autre Carte
  21.                 other_right: in std_logic;                          -- Commande Deplacement Droite Autre Carte
  22.                
  23.                 -- MODES DU JEU
  24.                 manette : in std_logic;                             -- Selection Manette (Encodeur / Accéléromètre)
  25.                 game_type: in std_logic;                            -- Type de Jeu
  26.                 taille: in std_logic;                               -- Param�tre Taille
  27.                 speed : in  STD_LOGIC;                              -- Vitesse du Jeu
  28.                 obstacle: in std_logic;                             -- Presence d'un Obstacle (Pong)
  29.                 pause: in std_logic;                                    -- Commande Mode Pause
  30.                 game_lost: in std_logic;                            -- Mode Echec
  31.  
  32.                 -- OBJETS CORRESPONDANT AU PIXEL COURANT
  33.                 bluebox : out  STD_LOGIC;                           -- Pixel Courant = Case Bleue
  34.                 left : out  STD_LOGIC;                              -- Pixel Courant = Gauche de l'Ecran
  35.                 right : out  STD_LOGIC;                             -- Pixel Courant = Droite de l'Ecran
  36.                 bottom : out  STD_LOGIC;                            -- Pixel Courant = Bas de l'Ecran
  37.                 wall_pong : out  STD_LOGIC;                     -- Pixel Courant = Mur pour Jeu Pong
  38.                 wall_brick: out  STD_LOGIC;                     -- Pixel Courant = Mur pour Jeu Casse Briques
  39.                 barrier: out STD_LOGIC;                             -- Pixel Courant = Obstacle (Jeu Pong)
  40.                 pad: out std_logic;                                 -- Pixel Appartient a la Raquette
  41.                 brick: out tableau;                                 -- Pixel Courant = Brique
  42.                 brick_bounce : out tableau;                     -- Rebond Contre une Brique
  43.                 ball : out  STD_LOGIC                           -- Pixel Courant = Balle
  44.               );
  45. end objects;
  46.  
  47. architecture Behavioral of objects is
  48.  
  49. -- OBJETS DU DECOR ET REBONDS ASSOCIES
  50. signal wall_top : STD_LOGIC;                    -- Pixel Courant = Mur du Haut
  51. signal wall_bottom : STD_LOGIC;             -- Pixel Courant = Mur du Bas
  52. signal wall_left :STD_LOGIC;                    -- Pixel Courant = Mur de Gauche
  53. signal wall_right: STD_LOGIC;                   -- Pixel Courant = Mur de Droite
  54. signal barrier_tmp: STD_LOGIC;              -- Pixel Courant = Obstacle (Pong)
  55.  
  56. signal leftbounce : STD_LOGIC;              -- Rebond Mur Gauche
  57. signal rightbounce : STD_LOGIC;             -- Rebond Mur Droit
  58. signal ybounce : STD_LOGIC;                 -- Rebond Contre une Brique ou Mur du Haut ou du Bas
  59. signal barrier_bounce: STD_LOGIC;           -- Rebond Contre Obstacle
  60.  
  61. -- RAQUETTE DU JEU CASSE BRIQUES ET REBONDS ASSOCIES
  62. signal pad_tmp: std_logic;                      -- Pixel Courant = Raquette
  63. signal pad_far_left: std_logic;             -- Pixel Courant = Zone Extreme Gauche Raquette
  64. signal pad_left: std_logic;                 -- Pixel Courant = Zone Gauche Raquette
  65. signal pad_center: std_logic;                   -- Pixel Courant = Zone Centrale Raquette
  66. signal pad_right: std_logic;                    -- Pixel Courant = Zone Droite Raquette
  67. signal pad_far_right: std_logic;                -- Pixel Courant = Zone Extreme Droite Raquette
  68.  
  69. signal pad_far_left_bounce : STD_LOGIC; -- Rebond Contre Zone Extreme Gauche de Raquette
  70. signal pad_left_bounce : STD_LOGIC;         -- Rebond Contre Zone Gauche de Raquette
  71. signal pad_center_bounce : STD_LOGIC;       -- Rebond Contre Zone Centrale de Raquette
  72. signal pad_right_bounce : STD_LOGIC;        -- Rebond Contre Zone Droite de Raquette
  73. signal pad_far_right_bounce : STD_LOGIC;    -- Rebond Contre Zone Extreme Droite de Raquette
  74.  
  75. -- RAQUETTE DU JEU PONG ET REBONDS ASSOCIES
  76. signal pong_left: std_logic;                    -- Pixel Courant = Raquette Gauche
  77. signal pong_right: std_logic;                   -- Pixel Courant = Raquette Droite
  78.  
  79. signal pong_left_bounce : STD_LOGIC;        -- Rebond Contre la Raquette Gauche
  80. signal pong_right_bounce : STD_LOGIC;       -- Rebond Contre la Raquette Droite
  81.  
  82. -- BRIQUES ET REBONDS ASSOCIES
  83. signal brick_tmp : tableau;                 -- Position des Briques
  84. signal brick_bounce_tmp: tableau;           -- Rebond sur des Briques
  85.  
  86. -- BALLE
  87. signal ball_tmp: std_logic;                 -- Pixel Courant = Balle
  88.  
  89.  
  90. begin
  91.  
  92.     -- GESTION DU DECOR
  93.     fond_ecran: entity work.decor
  94.         port map (
  95.             clk25       => clk25,           -- Horloge
  96.             reset       => reset,           -- Reset Asynchrone
  97.          endframe   => endframe,        -- Signal Fin Image Visible
  98.             xpos            => xpos,                -- Coordonnee X du Pixel Courant
  99.          ypos           => ypos,                -- Coordonnee Y du Pixel Courant
  100.          game_type  => game_type,       -- Type de Jeu
  101.             obstacle        => obstacle,        -- PResence d'un Obstacle (Pong)
  102.             bluebox         => bluebox,         -- Pixel Courant = Case Bleue
  103.          left           => left,                -- Pixel Courant = Gauche de l'Ecran
  104.          right      => right,           -- Pixel Courant = Droite de l'Ecran
  105.          bottom         => bottom,          -- Pixel Courant = Bas de l'Ecran
  106.          barrier        => barrier_tmp, -- Pixel Courant = Obstacle (Jeu Pong)
  107.             wall_top    => wall_top,        -- Pixel Courant = Mur du Haut
  108.             wall_left   => wall_left,       -- Pixel Courant = Mur de Gauche
  109.             wall_right  => wall_right,  -- Pixel Courant = Mur de Droite
  110.             wall_bottom => wall_bottom, -- Pixel Courant = Mur du Bas
  111.             wall_pong   =>  wall_pong,      -- Pixel Courant = Mur Jeu Pong
  112.             wall_brick  =>  wall_brick);    -- Pixel Courant = Mur Jeu Casse Briques
  113.  
  114.     barrier <= barrier_tmp;
  115.  
  116. ----------------------------------------------------------------------
  117.  
  118.  
  119.     pad <= pad_tmp;
  120.    
  121.     -- CONTROLEUR DE RAQUETTE
  122.     pad_ctrl: entity work.pad
  123.         port map (
  124.             clk25                   => clk25,               -- Horloge 25 MHz
  125.             clk_acc                     => clk_acc,             -- Horloge 25 Hz
  126.             reset                   => reset,               -- Reset Asynchrone
  127.          manette                    => manette,             -- Selection Manette (Encodeur / Accéléromètre)
  128.             game_type               => game_type,           -- Type de Jeu
  129.             taille                  => taille,              -- Commande de Taille Raquette
  130.             pause                   => pause,               -- Commande de Pause du Jeu
  131.             rot_left_pad            => own_left,            -- Deplacement Gauche Raquette Casse Briques
  132.             rot_right_pad           => own_right,           -- Deplacement Droite Raquette Casse Briques
  133.             rot_up_pong_left        => own_left,            -- Deplacement Haut Raquette Gauche Pong
  134.             rot_down_pong_left  => own_right,           -- Deplacement Bas Raquette Gauche Pong
  135.             rot_up_pong_right   => other_left,          -- Deplacement Haut Raquette Droite Pong
  136.             rot_down_pong_right     => other_right,     -- Deplacement Bas Raquette Droite Pong
  137.             xpos                        => xpos,                    -- Coordonnee X du Pixel Courant
  138.             ypos                        => ypos,                    -- Coordonnee Y du Pixel Courant
  139.             pad                         => pad_tmp,             -- Pixel Appartient a la Raquette
  140.             pad_far_left            => pad_far_left,        -- Pixel Appartient a la Zone Extreme Gauche
  141.             pad_left                => pad_left,            -- Pixel Appartient a la Zone Gauche
  142.             pad_center              => pad_center,      -- Pixel Appartient a la Zone Centrale
  143.             pad_right               => pad_right,           -- Pixel Appartient a la Zone Droite
  144.             pad_far_right           => pad_far_right,       -- Pixel Appartient a la Zone Extreme Droite
  145.             pong_left               => pong_left,           -- Pixel Appartient a la Raguette Gauche (Pong)
  146.             pong_right              => pong_right           -- Pixel Appartient a la Raquette Droite (Pong)
  147.         );         
  148.  
  149. ---------------------------------------------------------------------------
  150.  
  151.     -- GESTION DES REBONDS
  152.     bounce_ctrl: entity work.bounce
  153.         port map (
  154.             clk25                   => clk25,                   -- Horloge
  155.          reset                  => reset,                   -- Reset Asynchrone
  156.             endframe                => endframe,                -- Signal Fin Image Visible
  157.          ball                       => ball_tmp,                -- Pixel Courant = Balle
  158.             game_type               => game_type,               -- Type de Jeu
  159.             pong_left               => pong_left,               -- Pixel Appartient a la Raguette Gauche (Pong)
  160.             pong_right              => pong_right,              -- Pixel Appartient a la Raquette Droite (Pong)
  161.             pad_far_left            => pad_far_left,            -- Pixel Appartient a la Zone Extreme Gauche
  162.             pad_left                => pad_left,                -- Pixel Appartient a la Zone Gauche
  163.             pad_center              => pad_center,          -- Pixel Appartient a la Zone Centrale
  164.             pad_right               => pad_right,               -- Pixel Appartient a la Zone Droite
  165.             pad_far_right           => pad_far_right,           -- Pixel Appartient a la Zone Extreme Droite
  166.             wall_left               => wall_left,               -- Pixel Courant = Mur Gauche
  167.             wall_right              => wall_right,              -- Pixel Courant = Mur Droit
  168.             wall_top                => wall_top,                -- Pixel Courant = Mur Haut
  169.             wall_bottom             => wall_bottom,         -- Pixel Courant = Mur Haut
  170.             barrier                 => barrier_tmp,         -- Pixel Courant = Obstacle (Pong)
  171.             brick                   => brick_tmp,               -- Pixel Courant = Brique
  172.             leftbounce              => leftbounce,              -- Rebond Contre le Mur Gauche
  173.             rightbounce             => rightbounce,         -- Rebond Contre le Mur Droit
  174.          ybounce                    => ybounce,                 -- Rebond Contre une Brique ou Mur du Haut ou du Bas
  175.             barrier_bounce          => barrier_bounce,      -- Rebond Contre l'Obstacle
  176.          brick_bounce           => brick_bounce_tmp,        -- Rebond COntre une Brique
  177.             pong_left_bounce        => pong_left_bounce,        -- Rebond Contre Raquette Gauche (Pong)
  178.             pong_right_bounce   => pong_right_bounce,   -- Rebond Contre Raquette Droite (Pong)
  179.             pad_far_left_bounce     => pad_far_left_bounce, -- Rebond Contre Zone Extreme Gauche de Raquette
  180.          pad_left_bounce        => pad_left_bounce,     -- Rebond Contre Zone Gauche de Raquette
  181.          pad_center_bounce  => pad_center_bounce,   -- Rebond Contre Zone Centrale de Raquette
  182.          pad_right_bounce       => pad_right_bounce,        -- Rebond Contre Zone Droite de Raquette
  183.             pad_far_right_bounce    => pad_far_right_bounce -- Rebond Contre Zone Extreme Droite de Raquette
  184.         );
  185.  
  186. ---------------------------------------------------------------------------------------
  187.  
  188.     ball <= ball_tmp;
  189.  
  190.     -- GESTION DE LA BALLE
  191.     ball_ctrl: entity work.ball
  192.         port map (
  193.             clk25                   => clk25,                   -- Horloge
  194.          reset                  => reset,                   -- Reset Asynchrone
  195.             endframe                => endframe,                -- Signal Fin Image Visible
  196.          pause                      => pause,                   -- Mode Pause
  197.          speed                      => speed,                   -- Vitesse du Jeu
  198.             game_lost               => game_lost,               -- Partie Perdue
  199.             leftbounce              => leftbounce,              -- Rebond Contre le Mur Gauche
  200.             rightbounce             => rightbounce,         -- Rebond Contre le Mur Droit
  201.          ybounce                    => ybounce,                 -- Rebond Contre une Brique ou Mur du Haut ou du Bas
  202.             barrier_bounce          => barrier_bounce,      -- Rebond Contre l'Obstacle (Pong)
  203.             pong_left_bounce        => pong_left_bounce,        -- Rebond Contre Raquette Gauche (Pong)
  204.          pong_right_bounce  => pong_right_bounce,   -- Rebond Contre Raquette Droite (Pong)
  205.          pad_far_left_bounce    => pad_far_left_bounce, -- Rebond Contre Zone Extreme Gauche de Raquette
  206.          pad_left_bounce        => pad_left_bounce,     -- Rebond Contre Zone Gauche de Raquette
  207.          pad_center_bounce  => pad_center_bounce,   -- Rebond Contre Zone Centrale de Raquette
  208.          pad_right_bounce       => pad_right_bounce,        -- Rebond Contre Zone Droite de Raquette
  209.             pad_far_right_bounce    => pad_far_right_bounce,-- Rebond Contre Zone Extreme Droite de Raquette
  210.             xpos                        => xpos,                        -- Coordonnee X du Pixel Courant
  211.          ypos                       => ypos,                        -- Coordonnee Y du Pixel Courant
  212.             ball                        => ball_tmp                 -- Pixel Courant = Balle
  213.         );
  214.  
  215. -----------------------------------------------------------------------------------
  216.  
  217.     -- GESTION DES BRIQUES
  218.    
  219.     process(brick_tmp,brick_bounce_tmp)
  220.    
  221.     begin
  222.        
  223.         for i in 0 to 1 loop
  224.             for j in 0 to 8 loop
  225.                 brick_bounce(i)(j) <= brick_bounce_tmp(i)(j);
  226.                 brick(i)(j) <= brick_tmp(i)(j);
  227.             end loop;
  228.         end loop;
  229.     end process;
  230.  
  231.     brick_ctrl: entity work.brick_ctrl
  232.         port map (
  233.             xpos                    => xpos,                    -- Coordonnee X du Pixel Courant
  234.          ypos                   => ypos,                    -- Coordonnee Y du Pixel Courant
  235.             game_type           => game_type,           -- Type de Jeu
  236.             brick_bounce        => brick_bounce_tmp,    -- Drapeaux des Collisions Briques
  237.             brick               => brick_tmp            -- Pixel Courant = Brique
  238.         );
  239.        
  240.        
  241.        
  242. --process(clk25, reset)
  243. --begin
  244. --    if reset = '0' then
  245. --        -- Réinitialisation du score lors du reset
  246. --        score_cpt <= (others => '0');
  247. --    elsif rising_edge(clk25) then
  248. --        for i in 0 to 1 loop
  249. --            for j in 0 to 8 loop
  250. --                brick_bounce(i)(j) <= brick_bounce_tmp(i)(j);
  251. --                brick(i)(j) <= brick_tmp(i)(j);
  252.  
  253. --                -- Ajout du code pour incrémenter le score si une brique est cassée
  254. --                if brick_bounce_tmp(i)(j) = '1' then
  255. --                    score_cpt <= score_cpt + 1;
  256. --                end if;
  257. --            end loop;
  258. --        end loop;
  259. --    end if;
  260. --end process;
  261.  
  262.  
  263.    
  264.  
  265. --------------------------------------------------------------------------------------
  266.  
  267.  
  268. end Behavioral;
  269.  
  270.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement