diff options
Diffstat (limited to 'autoload')
| -rw-r--r-- | autoload/space_vlaze/enemy.vim | 52 | ||||
| -rw-r--r-- | autoload/space_vlaze/game.vim | 18 | 
2 files changed, 70 insertions, 0 deletions
| diff --git a/autoload/space_vlaze/enemy.vim b/autoload/space_vlaze/enemy.vim new file mode 100644 index 0000000..377c803 --- /dev/null +++ b/autoload/space_vlaze/enemy.vim @@ -0,0 +1,52 @@ +function! space_vlaze#enemy#EnemyCharacter() +	return '♤' +endfunction + + +if !exists('s:MAX_ENEMIES_ON_BOARD') +	let s:MAX_ENEMIES_ON_BOARD = 50 +endif + +if !exists('s:MIN_ENEMIES_ON_BOARD') +	let s:MIN_ENEMIES_ON_BOARD = 50 +endif + + +function! space_vlaze#enemy#AddEnemiesToBoard() +	let ticks = space_vlaze#game#Ticks() +	 +	" At a 50ms refresh rate 100 ticks == 5 seconds +	if ticks % 100 ==# 1 +		let new_enemy_count = ticks / 20 +		 +		if new_enemy_count <# s:MIN_ENEMIES_ON_BOARD +			let new_enemy_count = s:MIN_ENEMIES_ON_BOARD +		endif +		 +		if new_enemy_count ># s:MAX_ENEMIES_ON_BOARD +			let new_enemy_count = s:MAX_ENEMIES_ON_BOARD +		endif +		 +		let i = 0 +		while i < new_enemy_count +			call space_vlaze#enemy#DropEnemyAtRandomCoordinates() +			 +			let i += 1 +		endwhile +	endif +endfunction + + +function! space_vlaze#enemy#DropEnemyAtRandomCoordinates() +	let player_y = space_vlaze#player#PlayerY() +	let player_x = space_vlaze#player#PlayerX() +	let y = player_y +	let x = player_x +	 +	while player_y ==# y && player_x ==# x +		let y = space_vlaze#random#Random(space_vlaze#game#BoardHeight() - 1) +		let x = space_vlaze#random#Random(space_vlaze#game#BoardWidth() - 1) +	endwhile +	 +	call space_vlaze#game#SetBoardCell(y, x, space_vlaze#enemy#EnemyCharacter()) +endfunction diff --git a/autoload/space_vlaze/game.vim b/autoload/space_vlaze/game.vim index a1e00b3..29ba52b 100644 --- a/autoload/space_vlaze/game.vim +++ b/autoload/space_vlaze/game.vim @@ -2,6 +2,7 @@ function! space_vlaze#game#Init()  	let s:loop = 1  	let s:score = 0  	let s:start_time = localtime() +	let s:ticks = 1  	call space_vlaze#game#SetupWindow()  	call space_vlaze#colors#Initialize()  	call space_vlaze#game#InitializeBoard() @@ -10,7 +11,9 @@ function! space_vlaze#game#Init()  	while s:loop ==# 1  		sleep 50ms  		call space_vlaze#mappings#Listen() +		call space_vlaze#enemy#AddEnemiesToBoard()  		call space_vlaze#game#RenderBoard() +		let s:ticks += 1  	endwhile  endfunction @@ -94,6 +97,21 @@ function! space_vlaze#game#IsWithinBoard(y, x)  endfunction +function! space_vlaze#game#BoardHeight() +	return s:BOARD_HEIGHT +endfunction + + +function! space_vlaze#game#BoardWidth() +	return s:BOARD_WIDTH +endfunction + + +function! space_vlaze#game#Ticks() +	return s:ticks +endfunction + +  function! space_vlaze#game#Quit()  	let s:loop = -1  endfunction | 
