更新敌方坦克样式,增加简易ai判断
This commit is contained in:
@@ -71,6 +71,8 @@ wire enable_enermy1_control, enable_enermy2_control, enable_enermy3_control, ena
|
||||
wire enable_enermy1_display, enable_enermy2_display, enable_enermy3_display, enable_enermy4_display;
|
||||
wire enable_enermy1_bullet, enable_enermy2_bullet, enable_enermy3_bullet, enable_enermy4_bullet;
|
||||
|
||||
wire player1_fire, player2_fire, enermy1_fire, enermy2_fire, enermy3_fire, enermy4_fire;
|
||||
|
||||
wire enable_reward;
|
||||
|
||||
wire [ 3: 0 ] scorea1, scoreb1;
|
||||
@@ -83,6 +85,20 @@ wire [ 15: 0 ] LED_classic, LED_infinity;
|
||||
wire [ 7: 0 ] score_classic, score_infinity;
|
||||
wire [ 4: 0 ] timer;
|
||||
|
||||
|
||||
wire player1_bullet_en_feedback, player2_bullet_en_feedback;
|
||||
wire player1_bullet_en, player2_bullet_en;
|
||||
wire enermy1_bullet_en_feedback, enermy2_bullet_en_feedback, enermy3_bullet_en_feedback, enermy4_bullet_en_feedback;
|
||||
wire enermy1_bullet_en, enermy2_bullet_en, enermy3_bullet_en, enermy4_bullet_en;
|
||||
wire [ 10: 0 ] player1_bullet_H, player1_bullet_V, player2_bullet_H, player2_bullet_V;
|
||||
wire [ 10: 0 ] enermy1_bullet_H, enermy1_bullet_V, enermy2_bullet_H, enermy2_bullet_V,
|
||||
enermy3_bullet_H, enermy3_bullet_V, enermy4_bullet_H, enermy4_bullet_V;
|
||||
wire [ 2: 0 ] player1_bullet_dir, player2_bullet_dir;
|
||||
wire [ 2: 0 ] enermy1_bullet_dir, enermy2_bullet_dir, enermy3_bullet_dir, enermy4_bullet_dir;
|
||||
wire player1_revive, player2_revive;
|
||||
wire enermy1_revive, enermy2_revive, enermy3_revive, enermy4_revive;
|
||||
wire player1_scored, player2_scored;
|
||||
|
||||
assign reset_n = ~BTNC;
|
||||
|
||||
clock MyClock(
|
||||
@@ -106,7 +122,7 @@ 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 ),
|
||||
@@ -218,10 +234,10 @@ vga_data_selector u_vga_data_selector(
|
||||
.in7( enermy2_tank_data ),
|
||||
.in8( enermy3_tank_data ),
|
||||
.in9( enermy4_tank_data ),
|
||||
.in10(),
|
||||
.in11(),
|
||||
.in12(),
|
||||
.in13(),
|
||||
.in10( enermy1_bullet_data ),
|
||||
.in11( enermy2_bullet_data ),
|
||||
.in12( enermy3_bullet_data ),
|
||||
.in13( enermy4_bullet_data ),
|
||||
.in14(),
|
||||
.in15(),
|
||||
.in16(),
|
||||
@@ -235,6 +251,7 @@ tank_display u_tank1_display(
|
||||
.tank_destroyed( ~player1_tank_en ),
|
||||
.mode( mode ),
|
||||
.tank_revive( player1_revive ),
|
||||
.player_enermy( 1'b0 ),
|
||||
.vgaH( vgaH ),
|
||||
.vgaV( vgaV ),
|
||||
.tankH( player1_tank_H ),
|
||||
@@ -248,6 +265,7 @@ tank_display u_tank2_display(
|
||||
.tank_destroyed( ~player2_tank_en ),
|
||||
.mode( mode ),
|
||||
.tank_revive( player1_revive ),
|
||||
.player_enermy( 1'b0 ),
|
||||
.vgaH( vgaH ),
|
||||
.vgaV( vgaV ),
|
||||
.tankH( player2_tank_H ),
|
||||
@@ -260,6 +278,7 @@ tank_display enermy1_tank_display(
|
||||
.tank_destroyed( ~enermy1_tank_en ),
|
||||
.mode( mode ),
|
||||
.tank_revive( player1_revive ),
|
||||
.player_enermy( 1'b1 ),
|
||||
.vgaH( vgaH ),
|
||||
.vgaV( vgaV ),
|
||||
.tankH( enermy1_tank_H ),
|
||||
@@ -273,6 +292,7 @@ tank_display enermy2_tank_display(
|
||||
.tank_destroyed( ~enermy2_tank_en ),
|
||||
.mode( mode ),
|
||||
.tank_revive( player1_revive ),
|
||||
.player_enermy( 1'b1 ),
|
||||
.vgaH( vgaH ),
|
||||
.vgaV( vgaV ),
|
||||
.tankH( enermy2_tank_H ),
|
||||
@@ -285,6 +305,7 @@ tank_display enermy3_tank_display(
|
||||
.tank_destroyed( ~enermy3_tank_en ),
|
||||
.mode( mode ),
|
||||
.tank_revive( player1_revive ),
|
||||
.player_enermy( 1'b1 ),
|
||||
.vgaH( vgaH ),
|
||||
.vgaV( vgaV ),
|
||||
.tankH( enermy3_tank_H ),
|
||||
@@ -297,6 +318,7 @@ tank_display enermy4_tank_display(
|
||||
.tank_destroyed( ~enermy4_tank_en ),
|
||||
.mode( mode ),
|
||||
.tank_revive( player1_revive ),
|
||||
.player_enermy( 1'b1 ),
|
||||
.vgaH( vgaH ),
|
||||
.vgaV( vgaV ),
|
||||
.tankH( enermy4_tank_H ),
|
||||
@@ -307,41 +329,41 @@ tank_display enermy4_tank_display(
|
||||
tank_move player1_tank_move(
|
||||
clk, reset_n, 1,
|
||||
150, 150,
|
||||
player1_tank_dir, player1_tank_en, player1_tank_move_en, player1_moving,
|
||||
player1_tank_dir, player1_tank_en, player1_tank_move_en, 1'b0, player1_moving,
|
||||
player1_tank_H, player1_tank_V, player1_tank_moving_direction
|
||||
);
|
||||
|
||||
tank_move player2_tank_move(
|
||||
clk, reset_n, 1,
|
||||
350, 350,
|
||||
player2_tank_dir, player2_tank_en, player2_tank_move_en, player2_moving,
|
||||
player2_tank_dir, player2_tank_en, player2_tank_move_en, 1'b0, player2_moving,
|
||||
player2_tank_H, player2_tank_V, player2_tank_moving_direction
|
||||
);
|
||||
|
||||
tank_move enermy1_tank_move(
|
||||
clk, reset_n, 1,
|
||||
0, 0,
|
||||
enermy1_tank_dir, enermy1_tank_en, enermy1_tank_move_en, enermy1_moving,
|
||||
enermy1_tank_dir, enermy1_tank_en, enermy1_tank_move_en, 1'b1, enermy1_moving,
|
||||
enermy1_tank_H, enermy1_tank_V, enermy1_tank_moving_direction
|
||||
);
|
||||
|
||||
tank_move enermy2_tank_move(
|
||||
clk, reset_n, 1,
|
||||
540, 0,
|
||||
enermy2_tank_dir, enermy2_tank_en, enermy2_tank_move_en, enermy2_moving,
|
||||
enermy2_tank_dir, enermy2_tank_en, enermy2_tank_move_en, 1'b1, enermy2_moving,
|
||||
enermy2_tank_H, enermy2_tank_V, enermy2_tank_moving_direction
|
||||
);
|
||||
tank_move enermy3_tank_move(
|
||||
clk, reset_n, 1,
|
||||
0, 350,
|
||||
enermy3_tank_dir, enermy3_tank_en, enermy3_tank_move_en, enermy3_moving,
|
||||
enermy3_tank_dir, enermy3_tank_en, enermy3_tank_move_en, 1'b1, enermy3_moving,
|
||||
enermy3_tank_H, enermy3_tank_V, enermy3_tank_moving_direction
|
||||
);
|
||||
|
||||
tank_move enermy4_tank_move(
|
||||
clk, reset_n, 1,
|
||||
540, 350,
|
||||
enermy4_tank_dir, enermy4_tank_en, enermy4_tank_move_en, enermy4_moving,
|
||||
enermy4_tank_dir, enermy4_tank_en, enermy4_tank_move_en, 1'b1, enermy4_moving,
|
||||
enermy4_tank_H, enermy4_tank_V, enermy4_tank_moving_direction
|
||||
);
|
||||
|
||||
@@ -355,19 +377,93 @@ control u_control(
|
||||
.player2_fire( player2_fire ),
|
||||
.player2_moving( player2_moving )
|
||||
);
|
||||
enermy_control enermy1_control(
|
||||
.clk_8Hz( clk_8Hz ),
|
||||
.clk_2Hz( clk_2Hz ),
|
||||
.player1_H( player1_tank_H ),
|
||||
.player1_V( player1_tank_V ),
|
||||
.player2_H( player2_tank_H ),
|
||||
.player2_V( player2_tank_V ),
|
||||
.player1_bullet_H( player1_bullet_H ),
|
||||
.player1_bullet_V( player1_bullet_V ),
|
||||
.player1_bullet_dir( player1_bullet_dir ),
|
||||
.player2_bullet_H( player2_bullet_H ),
|
||||
.player2_bullet_V( player2_bullet_V ),
|
||||
.player2_bullet_dir( player2_bullet_dir ),
|
||||
|
||||
.enermy_H( enermy1_tank_H ),
|
||||
.enermy_V( enermy1_tank_V ),
|
||||
.enermy_tank_en( enermy1_tank_en ),
|
||||
.enermy_dir_feedback( enermy1_tank_dir ),
|
||||
.enermy_fire( enermy1_fire ),
|
||||
.enermy_moving( enermy1_moving )
|
||||
);
|
||||
|
||||
enermy_control enermy2_control(
|
||||
.clk_8Hz( clk_8Hz ),
|
||||
.clk_2Hz( clk_2Hz ),
|
||||
.player1_H( player1_tank_H ),
|
||||
.player1_V( player1_tank_V ),
|
||||
.player2_H( player2_tank_H ),
|
||||
.player2_V( player2_tank_V ),
|
||||
.player1_bullet_H( player1_bullet_H ),
|
||||
.player1_bullet_V( player1_bullet_V ),
|
||||
.player1_bullet_dir( player1_bullet_dir ),
|
||||
.player2_bullet_H( player2_bullet_H ),
|
||||
.player2_bullet_V( player2_bullet_V ),
|
||||
.player2_bullet_dir( player2_bullet_dir ),
|
||||
|
||||
.enermy_H( enermy2_tank_H ),
|
||||
.enermy_V( enermy2_tank_V ),
|
||||
.enermy_tank_en( enermy2_tank_en ),
|
||||
.enermy_dir_feedback( enermy2_tank_dir ),
|
||||
.enermy_fire( enermy2_fire ),
|
||||
.enermy_moving( enermy2_moving )
|
||||
);
|
||||
|
||||
enermy_control enermy3_control(
|
||||
.clk_8Hz( clk_8Hz ),
|
||||
.clk_2Hz( clk_2Hz ),
|
||||
.player1_H( player1_tank_H ),
|
||||
.player1_V( player1_tank_V ),
|
||||
.player2_H( player2_tank_H ),
|
||||
.player2_V( player2_tank_V ),
|
||||
.player1_bullet_H( player1_bullet_H ),
|
||||
.player1_bullet_V( player1_bullet_V ),
|
||||
.player1_bullet_dir( player1_bullet_dir ),
|
||||
.player2_bullet_H( player2_bullet_H ),
|
||||
.player2_bullet_V( player2_bullet_V ),
|
||||
.player2_bullet_dir( player2_bullet_dir ),
|
||||
|
||||
.enermy_H( enermy3_tank_H ),
|
||||
.enermy_V( enermy3_tank_V ),
|
||||
.enermy_tank_en( enermy3_tank_en ),
|
||||
.enermy_dir_feedback( enermy3_tank_dir ),
|
||||
.enermy_fire( enermy3_fire ),
|
||||
.enermy_moving( enermy3_moving )
|
||||
);
|
||||
enermy_control enermy4_control(
|
||||
.clk_8Hz( clk_8Hz ),
|
||||
.clk_2Hz( clk_2Hz ),
|
||||
.player1_H( player1_tank_H ),
|
||||
.player1_V( player1_tank_V ),
|
||||
.player2_H( player2_tank_H ),
|
||||
.player2_V( player2_tank_V ),
|
||||
.player1_bullet_H( player1_bullet_H ),
|
||||
.player1_bullet_V( player1_bullet_V ),
|
||||
.player1_bullet_dir( player1_bullet_dir ),
|
||||
.player2_bullet_H( player2_bullet_H ),
|
||||
.player2_bullet_V( player2_bullet_V ),
|
||||
.player2_bullet_dir( player2_bullet_dir ),
|
||||
|
||||
.enermy_H( enermy4_tank_H ),
|
||||
.enermy_V( enermy4_tank_V ),
|
||||
.enermy_tank_en( enermy4_tank_en ),
|
||||
.enermy_dir_feedback( enermy4_tank_dir ),
|
||||
.enermy_fire( enermy4_fire ),
|
||||
.enermy_moving( enermy4_moving )
|
||||
);
|
||||
|
||||
wire player1_bullet_en_feedback, player2_bullet_en_feedback;
|
||||
wire player1_bullet_en, player2_bullet_en;
|
||||
wire enermy1_bullet_en_feedback, enermy2_bullet_en_feedback, enermy3_bullet_en_feedback, enermy4_bullet_en_feedback;
|
||||
wire enermy1_bullet_en, enermy2_bullet_en, enermy3_bullet_en, enermy4_bullet_en;
|
||||
wire [ 10: 0 ] player1_bullet_H, player1_bullet_V, player2_bullet_H, player2_bullet_V;
|
||||
wire [ 10: 0 ] enermy1_bullet_H, enermy1_bullet_V, enermy2_bullet_H, enermy2_bullet_V,
|
||||
enermy3_bullet_H, enermy3_bullet_V, enermy4_bullet_H, enermy4_bullet_V;
|
||||
wire [ 2: 0 ] player1_bullet_dir, player2_bullet_dir;
|
||||
wire [ 2: 0 ] enermy1_bullet_dir, enermy2_bullet_dir, enermy3_bullet_dir, enermy4_bullet_dir;
|
||||
wire player1_revive, player2_revive;
|
||||
wire enermy1_revive, enermy2_revive, enermy3_revive, enermy4_revive;
|
||||
wire player1_scored, player2_scored;
|
||||
|
||||
|
||||
control_signals u_control_signals(
|
||||
@@ -410,6 +506,8 @@ bullet_control bullet_player1(
|
||||
.tank_en( player1_tank_en ),
|
||||
.tank_dir( player1_tank_dir ),
|
||||
.tank_fire( player1_fire ),
|
||||
.player_enermy( 1'b0 ),
|
||||
|
||||
.vgaV( vgaV ),
|
||||
.vgaH( vgaH ),
|
||||
.start( 1 ),
|
||||
@@ -427,6 +525,8 @@ bullet_control bullet_player2(
|
||||
.tank_en( player2_tank_en ),
|
||||
.tank_dir( player2_tank_dir ),
|
||||
.tank_fire( player2_fire ),
|
||||
.player_enermy( 1'b0 ),
|
||||
|
||||
.vgaV( vgaV ),
|
||||
.vgaH( vgaH ),
|
||||
.start( 1 ),
|
||||
@@ -436,6 +536,82 @@ bullet_control bullet_player2(
|
||||
.bullet_V_feedback( player2_bullet_V ),
|
||||
.bullet_direction( player2_bullet_dir )
|
||||
);
|
||||
bullet_control bullet_enermy1(
|
||||
.clk( clk ),
|
||||
.reset_n( 1 ),
|
||||
.tank_H( enermy1_tank_H ),
|
||||
.tank_V( enermy1_tank_V ),
|
||||
.tank_en( enermy1_tank_en ),
|
||||
.tank_dir( enermy1_tank_dir ),
|
||||
.tank_fire( enermy1_fire ),
|
||||
.player_enermy( 1'b1 ),
|
||||
|
||||
.vgaV( vgaV ),
|
||||
.vgaH( vgaH ),
|
||||
.start( 1 ),
|
||||
.ready( enermy1_bullet_en ),
|
||||
.bulletData( enermy1_bullet_data ),
|
||||
.bullet_H_feedback( enermy1_bullet_H ),
|
||||
.bullet_V_feedback( enermy1_bullet_V ),
|
||||
.bullet_direction( enermy1_bullet_dir )
|
||||
);
|
||||
bullet_control bullet_enermy2(
|
||||
.clk( clk ),
|
||||
.reset_n( 1 ),
|
||||
.tank_H( enermy2_tank_H ),
|
||||
.tank_V( enermy2_tank_V ),
|
||||
.tank_en( enermy2_tank_en ),
|
||||
.tank_dir( enermy2_tank_dir ),
|
||||
.tank_fire( enermy2_fire ),
|
||||
.player_enermy( 1'b1 ),
|
||||
|
||||
.vgaV( vgaV ),
|
||||
.vgaH( vgaH ),
|
||||
.start( 1 ),
|
||||
.ready( enermy2_bullet_en ),
|
||||
.bulletData( enermy2_bullet_data ),
|
||||
.bullet_H_feedback( enermy2_bullet_H ),
|
||||
.bullet_V_feedback( enermy2_bullet_V ),
|
||||
.bullet_direction( enermy2_bullet_dir )
|
||||
);
|
||||
bullet_control bullet_enermy3(
|
||||
.clk( clk ),
|
||||
.reset_n( 1 ),
|
||||
.tank_H( enermy3_tank_H ),
|
||||
.tank_V( enermy3_tank_V ),
|
||||
.tank_en( enermy3_tank_en ),
|
||||
.tank_dir( enermy3_tank_dir ),
|
||||
.tank_fire( enermy3_fire ),
|
||||
.player_enermy( 1'b1 ),
|
||||
|
||||
.vgaV( vgaV ),
|
||||
.vgaH( vgaH ),
|
||||
.start( 1 ),
|
||||
.ready( enermy3_bullet_en ),
|
||||
.bulletData( enermy3_bullet_data ),
|
||||
.bullet_H_feedback( enermy3_bullet_H ),
|
||||
.bullet_V_feedback( enermy3_bullet_V ),
|
||||
.bullet_direction( enermy3_bullet_dir )
|
||||
);
|
||||
bullet_control bullet_enermy4(
|
||||
.clk( clk ),
|
||||
.reset_n( 1 ),
|
||||
.tank_H( enermy4_tank_H ),
|
||||
.tank_V( enermy4_tank_V ),
|
||||
.tank_en( enermy4_tank_en ),
|
||||
.tank_dir( enermy4_tank_dir ),
|
||||
.tank_fire( enermy4_fire ),
|
||||
.player_enermy( 1'b1 ),
|
||||
|
||||
.vgaV( vgaV ),
|
||||
.vgaH( vgaH ),
|
||||
.start( 1 ),
|
||||
.ready( enermy4_bullet_en ),
|
||||
.bulletData( enermy4_bullet_data ),
|
||||
.bullet_H_feedback( enermy4_bullet_H ),
|
||||
.bullet_V_feedback( enermy4_bullet_V ),
|
||||
.bullet_direction( enermy4_bullet_dir )
|
||||
);
|
||||
cal_score u_cal_score(
|
||||
clk, reset_n, enermy1_tank_en, enermy2_tank_en, enermy3_tank_en, enermy4_tank_en,
|
||||
player1_scored, player2_scored, scorea1, scorea2, scoreb1, scoreb2, scorec1, scorec2, scored1, scored2
|
||||
@@ -480,7 +656,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 ),
|
||||
|
||||
Reference in New Issue
Block a user