init update to 12/30 8.37 am
This commit is contained in:
@@ -0,0 +1,192 @@
|
||||
`timescale 1ns / 1ps
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// Company:
|
||||
// Engineer:
|
||||
//
|
||||
// Create Date: 12/28/2020 08:31:42 PM
|
||||
// Design Name:
|
||||
// Module Name: game_logic_infinity
|
||||
// Project Name:
|
||||
// Target Devices:
|
||||
// Tool Versions:
|
||||
// Description:
|
||||
//
|
||||
// Dependencies:
|
||||
//
|
||||
// Revision:
|
||||
// Revision 0.01 - File Created
|
||||
// Additional Comments:
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
module game_logic_infinity(
|
||||
input clk,
|
||||
input btn_return,
|
||||
input btn_stop,
|
||||
input enable_game_infinity,
|
||||
input mytank1_state,
|
||||
input mytank2_state,
|
||||
input [ 3: 0 ] scorea1,
|
||||
input [ 3: 0 ] scorea2,
|
||||
input [ 3: 0 ] scoreb1,
|
||||
input [ 3: 0 ] scoreb2,
|
||||
input [ 3: 0 ] scorec1,
|
||||
input [ 3: 0 ] scorec2,
|
||||
input [ 3: 0 ] scored1,
|
||||
input [ 3: 0 ] scored2,
|
||||
input item_addtime,
|
||||
input item_test,
|
||||
|
||||
input item_invincible,
|
||||
|
||||
output reg [ 4: 0 ] timer,
|
||||
|
||||
output reg gameover_infinity,
|
||||
|
||||
output wire [ 15: 0 ] led_infinity,
|
||||
output reg [ 7: 0 ] score_infinity //[7:4] is player2 ,[3:0] is player1
|
||||
);
|
||||
|
||||
|
||||
reg [ 31: 0 ] cnt;
|
||||
reg [ 3: 0 ] score1;
|
||||
reg [ 3: 0 ] score2;
|
||||
reg add_flag;
|
||||
reg item_flag;
|
||||
reg [ 1: 0 ] HP1, HP2;
|
||||
initial begin
|
||||
gameover_infinity <= 0;
|
||||
cnt <= 0;
|
||||
timer <= 16;
|
||||
score_infinity <= 0;
|
||||
score1 <= 0;
|
||||
score2 <= 0;
|
||||
add_flag <= 0;
|
||||
item_flag <= 0;
|
||||
HP1 <= 2;
|
||||
HP2 <= 2;
|
||||
end
|
||||
|
||||
|
||||
always @( negedge mytank1_state ) begin
|
||||
if ( item_invincible == 0 ) begin
|
||||
HP1 <= HP1 - 1;
|
||||
end
|
||||
else begin
|
||||
HP1 <= HP1;
|
||||
end
|
||||
if ( enable_game_infinity == 1'b0 ) begin
|
||||
HP1 <= 2;
|
||||
end
|
||||
end
|
||||
|
||||
always @( negedge mytank2_state ) begin
|
||||
if ( item_invincible == 0 ) begin
|
||||
HP2 <= HP2 - 1;
|
||||
end
|
||||
else begin
|
||||
HP2 <= HP2;
|
||||
end
|
||||
if ( enable_game_infinity == 1'b0 ) begin
|
||||
HP2 <= 2;
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
always @( posedge clk ) begin
|
||||
if ( !enable_game_infinity ) begin
|
||||
gameover_infinity <= 0;
|
||||
cnt <= 0;
|
||||
timer <= 16;
|
||||
if ( btn_return ) begin
|
||||
score1 <= 0;
|
||||
score2 <= 0;
|
||||
score_infinity <= 0;
|
||||
end
|
||||
else begin
|
||||
score_infinity[ 7: 4 ] <= score2[ 3: 0 ];
|
||||
score_infinity[ 3: 0 ] <= score1[ 3: 0 ];
|
||||
end
|
||||
end
|
||||
|
||||
else begin
|
||||
if ( timer == 0 || btn_stop || ( | HP1 == 0 ) || ( | HP2 == 0 ) ) begin
|
||||
timer <= 16;
|
||||
gameover_infinity <= 1;
|
||||
end
|
||||
else begin
|
||||
if ( score1 < scorea1 + scoreb1 + scorec1 + scored1 ) begin
|
||||
if ( add_flag == 0 && timer > 0 && timer < 16 ) begin
|
||||
timer <= timer + 1;
|
||||
add_flag = 1;
|
||||
end
|
||||
end
|
||||
else begin
|
||||
add_flag = 0;
|
||||
end
|
||||
if ( score2 < scorea2 + scoreb2 + scorec2 + scored2 ) begin
|
||||
if ( add_flag == 0 && timer > 0 && timer < 16 ) begin
|
||||
timer <= timer + 1;
|
||||
add_flag = 1;
|
||||
end
|
||||
end
|
||||
else begin
|
||||
add_flag = 0;
|
||||
end
|
||||
|
||||
score1 <= scorea1 + scoreb1 + scorec1 + scored1 ;
|
||||
score2 <= scorea2 + scoreb2 + scorec2 + scored2;
|
||||
|
||||
if ( item_addtime == 1 || item_test ) begin
|
||||
if ( item_flag == 0 && timer > 0 && timer < 16 ) begin
|
||||
begin
|
||||
if ( timer == 15 ) begin
|
||||
timer <= timer + 1;
|
||||
end
|
||||
else if ( timer == 14 ) begin
|
||||
timer <= timer + 2;
|
||||
end
|
||||
else begin
|
||||
timer <= timer + 3;
|
||||
end
|
||||
item_flag <= 1;
|
||||
end
|
||||
end
|
||||
else begin
|
||||
timer <= timer;
|
||||
item_flag <= 1;
|
||||
end
|
||||
end
|
||||
else begin
|
||||
item_flag <= 0;
|
||||
end
|
||||
score_infinity[ 7: 4 ] <= score2[ 3: 0 ];
|
||||
score_infinity[ 3: 0 ] <= score1[ 3: 0 ];
|
||||
cnt <= cnt + 1;
|
||||
if ( cnt >= 100_000_000 ) begin
|
||||
timer <= timer - 1;
|
||||
cnt <= 0;
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
assign led_infinity[ 0 ] = enable_game_infinity ? ( timer > 0 ) : 0;
|
||||
assign led_infinity[ 1 ] = enable_game_infinity ? ( timer > 1 ) : 0;
|
||||
assign led_infinity[ 2 ] = enable_game_infinity ? ( timer > 2 ) : 0;
|
||||
assign led_infinity[ 3 ] = enable_game_infinity ? ( timer > 3 ) : 0;
|
||||
assign led_infinity[ 4 ] = enable_game_infinity ? ( timer > 4 ) : 0;
|
||||
assign led_infinity[ 5 ] = enable_game_infinity ? ( timer > 5 ) : 0;
|
||||
assign led_infinity[ 6 ] = enable_game_infinity ? ( timer > 6 ) : 0;
|
||||
assign led_infinity[ 7 ] = enable_game_infinity ? ( timer > 7 ) : 0;
|
||||
|
||||
assign led_infinity [ 8 ] = enable_game_infinity ? ( timer > 8 ) : 0;
|
||||
assign led_infinity [ 9 ] = enable_game_infinity ? ( timer > 9 ) : 0;
|
||||
assign led_infinity [ 10 ] = enable_game_infinity ? ( timer > 10 ) : 0;
|
||||
assign led_infinity [ 11 ] = enable_game_infinity ? ( timer > 11 ) : 0;
|
||||
assign led_infinity [ 12 ] = enable_game_infinity ? ( timer > 12 ) : 0;
|
||||
assign led_infinity [ 13 ] = enable_game_infinity ? ( timer > 13 ) : 0;
|
||||
assign led_infinity [ 14 ] = enable_game_infinity ? ( timer > 14 ) : 0;
|
||||
assign led_infinity [ 15 ] = enable_game_infinity ? ( timer > 15 ) : 0;
|
||||
endmodule
|
||||
Reference in New Issue
Block a user