Skip to content

Commit

Permalink
add all source and report
Browse files Browse the repository at this point in the history
  • Loading branch information
cxz66666 committed Jan 17, 2021
1 parent bedf471 commit b4bb415
Show file tree
Hide file tree
Showing 54 changed files with 885 additions and 57 deletions.
732 changes: 726 additions & 6 deletions README.md

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions TankGame.srcs/constrs_1/new/K7.xdc
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,9 @@ set_property PACKAGE_PIN J15 [get_ports {SW[0]}]
set_property PACKAGE_PIN L16 [get_ports {SW[1]}]
set_property PACKAGE_PIN M13 [get_ports {SW[2]}]
set_property PACKAGE_PIN R15 [get_ports {SW[3]}]
set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets {SW[3]}]
set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets {SW[2]}]

set_property IOSTANDARD LVCMOS33 [get_ports {SW[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {SW[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {SW[1]}]
Expand Down
39 changes: 39 additions & 0 deletions TankGame.srcs/sources_1/imports/ScoreBoard/CreateNumber.v
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 20:12:55 10/27/2020
// Design Name:
// Module Name: CreateNumber
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module CreateNumber(
input wire [ 2: 0 ] btn,
output reg [ 7: 0 ] num
);
wire [ 3: 0 ] heart_add, heart_minus, time_add, time_minus;
initial
num <= 8'b1111_0100;

assign heart_add = num[ 3: 0 ] == 6 ? num[ 3 : 0 ] : num[ 3 : 0 ] + 1'b1;
assign heart_minus = num[ 3: 0 ] == 0 ? num[ 3 : 0 ] : num[ 3 : 0 ] - 1'b1;
assign time_add = num[ 7: 4 ] + 1'b1;
assign time_minus = num[ 7: 4 ] - 1'b1;

always @( posedge btn[ 1 ] )
num[ 3: 0 ] <= btn[ 0 ] == 1'b1 ? heart_add : heart_minus;
always @( posedge btn[ 2 ] )
num[ 7: 4 ] <= btn[ 0 ] == 1'b1 ? time_add : time_minus;

endmodule
58 changes: 35 additions & 23 deletions TankGame.srcs/sources_1/new/Top.v
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ wire enermy1_revive, enermy2_revive, enermy3_revive, enermy4_revive;
wire player1_scored, player2_scored;
wire [ 1: 0 ] winner;
wire timeup;
wire [ 7: 0 ] initial_num;
assign reset_n = ~BTNC;

clock MyClock(
Expand All @@ -120,13 +121,16 @@ KeyBoard_PS2 My_Ps2(
.out( KeyBoard_Output )
);
clk_wiz_0 clk_vga( .clk_in1( clk ), .reset( 1'b0 ), .clk_25m( clk_VGA ) , .locked() );

CreateNumber u_CreateNumber(
.btn( SW[ 3: 1 ] ),
.num( initial_num )
);

game_mode u_game_mode(
.clk( clk ),
.btn_confirm( BTNC ),
.btn_mode_sel( SW[ 0 ] ),
.btn_return( BTNU ), //the under button is used for return to the game
.btn_return( BTNU ), //the under button is used for return to the game
.gameover_classic( gameover_classic ),
.gameover_infinity( gameover_infinity ),
.enable_shell1( enable_enermy1_bullet ),
Expand Down Expand Up @@ -161,6 +165,7 @@ game_logic_classic u_game_logic_classic(
.btn_return( BTNU ),
.btn_stop( BTND ),
.enable_game_classic( enable_game_classic ),
.initial_num( initial_num[ 3: 0 ] ),
.mytank1_state( player1_tank_en ),
.mytank2_state( player2_tank_en ),
.scorea1( scorea1 ),
Expand All @@ -186,6 +191,7 @@ game_logic_infinity u_game_logic_infinity(
.btn_return( BTNU ),
.btn_stop( BTND ),
.enable_game_infinity( enable_game_infinity ),
.initial_num( initial_num[ 7: 4 ] ),
.mytank1_state( player1_tank_en ),
.mytank2_state( player2_tank_en ),
.scorea1( scorea1 ),
Expand Down Expand Up @@ -236,21 +242,21 @@ vga_data_background u_data_background(
vga_data_selector u_vga_data_selector(
.clk( clk ),
.in1( backgroundData ),
.in2( player1_tank_data ),
.in3( player1_bullet_data ),
.in4( player2_tank_data ),
.in5( player2_bullet_data ),
.in6( enermy1_tank_data ),
.in7( enermy2_tank_data ),
.in8( enermy3_tank_data ),
.in9( enermy4_tank_data ),
.in10( enermy1_bullet_data ),
.in11( enermy2_bullet_data ),
.in12( enermy3_bullet_data ),
.in13( enermy4_bullet_data ),
.in2( ( player1_tank_data == 12'hfff ) ? 12'h000 : player1_tank_data ),
.in3( ( player1_bullet_data == 12'hfff ) ? 12'h000 : player1_bullet_data ),
.in4( ( player2_tank_data == 12'hfff ) ? 12'h000 : player2_tank_data ),
.in5( ( player2_bullet_data == 12'hfff ) ? 12'h000 : player2_bullet_data ),
.in6( ( enermy1_tank_data == 12'hfff ) ? 12'h000 : enermy1_tank_data ),
.in7( ( enermy2_tank_data == 12'hfff ) ? 12'h000 : enermy2_tank_data ),
.in8( ( enermy3_tank_data == 12'hfff ) ? 12'h000 : enermy3_tank_data ),
.in9( ( enermy4_tank_data == 12'hfff ) ? 12'h000 : enermy4_tank_data ),
.in10( ( enermy1_bullet_data == 12'hfff ) ? 12'h000 : enermy1_bullet_data ),
.in11( ( enermy2_bullet_data == 12'hfff ) ? 12'h000 : enermy2_bullet_data ),
.in12( ( enermy3_bullet_data == 12'hfff ) ? 12'h000 : enermy3_bullet_data ),
.in13( ( enermy4_bullet_data == 12'hfff ) ? 12'h000 : enermy4_bullet_data ),
.in14( game_information_data ),
.in15( heart_gametips_data ),
.in16( item_data ),
.in16( ( item_data == 12'hfff ) ? 12'h000 : item_data ),
.in17(),
.out( VGAData )
);
Expand Down Expand Up @@ -296,6 +302,7 @@ tank_display enermy1_tank_display(
.vgaV( vgaV ),
.tankH( enermy1_tank_H ),
.tankV( enermy1_tank_V ),
.item_invincible( 0 ),
.tankData( enermy1_tank_data )
);

Expand All @@ -310,6 +317,7 @@ tank_display enermy2_tank_display(
.vgaV( vgaV ),
.tankH( enermy2_tank_H ),
.tankV( enermy2_tank_V ),
.item_invincible( 0 ),
.tankData( enermy2_tank_data )
);
tank_display enermy3_tank_display(
Expand All @@ -323,6 +331,7 @@ tank_display enermy3_tank_display(
.vgaV( vgaV ),
.tankH( enermy3_tank_H ),
.tankV( enermy3_tank_V ),
.item_invincible( 0 ),
.tankData( enermy3_tank_data )
);
tank_display enermy4_tank_display(
Expand All @@ -336,6 +345,7 @@ tank_display enermy4_tank_display(
.vgaV( vgaV ),
.tankH( enermy4_tank_H ),
.tankV( enermy4_tank_V ),
.item_invincible( 0 ),
.tankData( enermy4_tank_data )
);

Expand Down Expand Up @@ -536,7 +546,7 @@ bullet_control bullet_player1(
.item_faster( item_faster ),
.vgaV( vgaV ),
.vgaH( vgaH ),
.start( 1 ),
.start( enable_game_classic | enable_game_infinity ),
.ready( player1_bullet_en ),
.bulletData( player1_bullet_data ),
.bullet_H_feedback( player1_bullet_H ),
Expand All @@ -556,7 +566,7 @@ bullet_control bullet_player2(
.item_faster( item_faster ),
.vgaV( vgaV ),
.vgaH( vgaH ),
.start( 1 ),
.start( enable_game_classic | enable_game_infinity ),
.ready( player2_bullet_en ),
.bulletData( player2_bullet_data ),
.bullet_H_feedback( player2_bullet_H ),
Expand All @@ -576,7 +586,7 @@ bullet_control bullet_enermy1(
.item_faster( item_faster ),
.vgaV( vgaV ),
.vgaH( vgaH ),
.start( 1 ),
.start( enable_game_classic | enable_game_infinity ),
.ready( enermy1_bullet_en ),
.bulletData( enermy1_bullet_data ),
.bullet_H_feedback( enermy1_bullet_H ),
Expand All @@ -596,7 +606,7 @@ bullet_control bullet_enermy2(
.item_faster( item_faster ),
.vgaV( vgaV ),
.vgaH( vgaH ),
.start( 1 ),
.start( enable_game_classic | enable_game_infinity ),
.ready( enermy2_bullet_en ),
.bulletData( enermy2_bullet_data ),
.bullet_H_feedback( enermy2_bullet_H ),
Expand All @@ -616,7 +626,7 @@ bullet_control bullet_enermy3(
.item_faster( item_faster ),
.vgaV( vgaV ),
.vgaH( vgaH ),
.start( 1 ),
.start( enable_game_classic | enable_game_infinity ),
.ready( enermy3_bullet_en ),
.bulletData( enermy3_bullet_data ),
.bullet_H_feedback( enermy3_bullet_H ),
Expand All @@ -636,7 +646,7 @@ bullet_control bullet_enermy4(
.item_faster( item_faster ),
.vgaV( vgaV ),
.vgaH( vgaH ),
.start( 1 ),
.start( enable_game_classic | enable_game_infinity ),
.ready( enermy4_bullet_en ),
.bulletData( enermy4_bullet_data ),
.bullet_H_feedback( enermy4_bullet_H ),
Expand Down Expand Up @@ -668,6 +678,8 @@ game_information_display u_game_information_display(
vga_data_heart_gametips u_vga_data_heart_gametips(
.clk( clk ),
.mode( mode ),
.initial_num( initial_num ),
.choose_mode( SW[ 0 ] ),
.vgaH( vgaH ),
.vgaV( vgaV ),
.winner( winner ),
Expand Down Expand Up @@ -716,7 +728,7 @@ wire [ 31: 0 ] num ;
// assign num = { 3'b000, player1_tank_collide[7], 3'b000, player1_tank_collide[6], 3'b000, player1_tank_collide[5], 3'b000, player1_tank_collide[4],
// player1_bullet_H[7:0], player1_bullet_V[7:0] };

assign num = { 3'b000, player1_moving, 3'b000, player1_tank_dir[ 1 ], 3'b000, player1_tank_dir[ 0 ], 4'b0000, 3'b000, player1_moving, 3'b000, player1_tank_en, 3'b000, player2_tank_en, 3'b000, player1_tank_move_en };
assign num = { 3'b0, initial_num[ 7 ], 3'b0, initial_num[ 6 ], 3'b0, initial_num[ 5 ], 3'b0, initial_num[ 4 ], 3'b0, initial_num[ 3 ], 3'b0, initial_num[ 2 ], 3'b0, initial_num[ 1 ], 3'b0, initial_num[ 0 ] };
// Disp_Num my_Disp_Num(
// .clk( clk ),
// .RST( 1'b0 ),
Expand All @@ -735,7 +747,7 @@ SegAndLed u_SegAndLed(
.score_classic( score_classic ),
.score_infinity( score_infinity ),
.timer( timer ),
.default_num( num ), //when mode ==00(before begin mode) then output num ,you can also use it as debug
.default_num( num ), //when mode ==00(before begin mode) then output num ,you can also use it as debug
.enable_game_classic( enable_game_classic ),
.enable_game_infinity( enable_game_infinity ),
.player1_tank_en( player1_tank_en ),
Expand Down
6 changes: 3 additions & 3 deletions TankGame.srcs/sources_1/new/enermy_control.v
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ module enermy_control(
input clk_8Hz,
input clk_2Hz,
input clk_10ms,
input [ 1: 0 ] flag, //00 01 10 11 four tanks
input [ 1: 0 ] flag, //00 01 10 11 four tanks
input [ 10: 0 ] player1_H,
input [ 10: 0 ] player1_V,
input [ 10: 0 ] player2_H,
Expand Down Expand Up @@ -78,8 +78,8 @@ assign enermy_moving = enermy_tank_en;

initial begin
enermy_fire <= 1'b0;
counter_num <= flag;
rand <= flag[ 0 ];
counter_num <= 0;
rand <= 0;
Continue <= 0;
Continue_num <= 0;
enermy_fire_tmp <= 0;
Expand Down
1 change: 1 addition & 0 deletions TankGame.srcs/sources_1/new/game_information_display.v
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ module game_information_display(
input clk,
input enable_game_classic,
input enable_game_infinity,

input [ 7: 0 ] score_classic,
input [ 4: 0 ] timer,
input [ 10: 0 ] vgaH,
Expand Down
7 changes: 4 additions & 3 deletions TankGame.srcs/sources_1/new/game_logic_classic.v
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ module game_logic_classic(
input enable_game_classic,
input mytank1_state,
input mytank2_state,
input [ 3: 0 ] initial_num,
input [ 3: 0 ] scorea1,
input [ 3: 0 ] scorea2,
input [ 3: 0 ] scoreb1,
Expand All @@ -44,7 +45,7 @@ module game_logic_classic(

output reg gameover_classic,
output wire [ 15: 0 ] led_classic,
output reg [ 7: 0 ] score_classic, //[7:4] is player2 ,[3:0] is player1
output reg [ 7: 0 ] score_classic, //[7:4] is player2 ,[3:0] is player1
output reg [ 1: 0 ] winner
);
reg [ 3: 0 ] score1;
Expand Down Expand Up @@ -75,8 +76,8 @@ always @( posedge clk ) begin
HP2_value <= HP2_value;
end
if ( enable_game_classic == 1'b0 ) begin
HP1_value <= 4;
HP2_value <= 4;
HP1_value <= initial_num;
HP2_value <= initial_num;
end
if ( item_addHP && ~item_addHP_last ) begin
if ( which_player == 0 ) begin
Expand Down
21 changes: 11 additions & 10 deletions TankGame.srcs/sources_1/new/game_logic_infinity.v
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ module game_logic_infinity(
input enable_game_infinity,
input mytank1_state,
input mytank2_state,
input [ 3: 0 ] initial_num,
input [ 3: 0 ] scorea1,
input [ 3: 0 ] scorea2,
input [ 3: 0 ] scoreb1,
Expand All @@ -45,7 +46,7 @@ module game_logic_infinity(
output reg gameover_infinity,

output wire [ 15: 0 ] led_infinity,
output reg [ 7: 0 ] score_infinity, //[7:4] is player2 ,[3:0] is player1
output reg [ 7: 0 ] score_infinity, //[7:4] is player2 ,[3:0] is player1
output reg timeup
);

Expand All @@ -60,7 +61,7 @@ reg item_addtime_last;
initial begin
gameover_infinity <= 0;
cnt <= 0;
timer <= 16;
timer <= 0;
score_infinity <= 0;
score1 <= 0;
score2 <= 0;
Expand Down Expand Up @@ -121,7 +122,7 @@ always @( posedge clk ) begin
if ( !enable_game_infinity ) begin
gameover_infinity <= 0;
cnt <= 0;
timer <= 16;
timer <= initial_num;
if ( btn_return ) begin
score1 <= 0;
score2 <= 0;
Expand All @@ -136,13 +137,13 @@ always @( posedge clk ) begin

else begin
if ( timer == 0 || btn_stop || ( | HP1_value == 0 ) || ( | HP2_value == 0 ) ) begin
timer <= 16;
timer <= initial_num;
gameover_infinity <= 1;
timeup <= 1'b1;
end
else begin
if ( score1 < scorea1 + scoreb1 + scorec1 + scored1 ) begin
if ( add_flag == 0 && timer > 0 && timer < 16 ) begin
if ( add_flag == 0 && timer > 0 && timer < initial_num ) begin
timer <= timer + 3;
cnt <= 0;
add_flag = 1;
Expand All @@ -152,7 +153,7 @@ always @( posedge clk ) begin
add_flag = 0;
end
if ( score2 < scorea2 + scoreb2 + scorec2 + scored2 ) begin
if ( add_flag == 0 && timer > 0 && timer < 16 ) begin
if ( add_flag == 0 && timer > 0 && timer < initial_num ) begin
timer <= timer + 3;
cnt <= 0;
add_flag = 1;
Expand All @@ -166,12 +167,12 @@ always @( posedge clk ) begin
score2 <= scorea2 + scoreb2 + scorec2 + scored2;

if ( item_addtime == 1 ) begin
if ( item_flag == 0 && timer > 0 && timer < 16 ) begin
if ( item_flag == 0 && timer > 0 && timer < initial_num ) begin
begin
if ( timer == 15 ) begin
if ( timer == initial_num - 1 ) begin
timer <= timer + 1;
end
else if ( timer == 14 ) begin
else if ( timer == initial_num - 2 ) begin
timer <= timer + 2;
end
else begin
Expand All @@ -197,7 +198,7 @@ always @( posedge clk ) begin
end

if ( item_addtime && ~item_addtime_last ) begin
timer <= timer + 10;
timer <= 4'b1111;
end
item_addtime_last <= item_addtime;
end
Expand Down
4 changes: 2 additions & 2 deletions TankGame.srcs/sources_1/new/vga_data_background.v
Original file line number Diff line number Diff line change
Expand Up @@ -92,15 +92,15 @@ startpic_450_200 u_start_pic(

always@( posedge clk ) begin
if ( !sw_mode_sel ) begin
if ( vgaH >= 229 && vgaH <= 233 && vgaV >= 233 && vgaV <= 237 ) begin
if ( vgaH >= 223 && vgaH <= 233 && vgaV >= 227 && vgaV <= 237 ) begin
VGA_data_cursor <= 12'h0F0;
end
else begin
VGA_data_cursor <= 12'h0;
end
end
else begin
if ( vgaH >= 229 && vgaH <= 233 && vgaV >= 252 && vgaV <= 256 ) begin
if ( vgaH >= 223 && vgaH <= 233 && vgaV >= 246 && vgaV <= 256 ) begin
VGA_data_cursor <= 12'h0F0;
end
else begin
Expand Down
Loading

0 comments on commit b4bb415

Please sign in to comment.