From 864b87d37a5c19e0445a3fb124ea154b201d5ae3 Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Sun, 4 Oct 2015 12:41:37 -0400 Subject: Initial commit. Initial menu and board state Setup layout and structure of the code. * Add a command and map to start the game * When the game is started, prompt for game start, help, or leaderboard * Create help file template (TODO) * On game start, initialise the board with spaces and a player character * Setup buffer locals on game start * Create various functions that we'll need coming up either as stubs or filled in with what they'll probably be. --- autoload/space_vlaze.vim | 3 +++ autoload/space_vlaze/buffer.vim | 17 +++++++++++++ autoload/space_vlaze/colors.vim | 3 +++ autoload/space_vlaze/game.vim | 53 +++++++++++++++++++++++++++++++++++++++ autoload/space_vlaze/help.vim | 4 +++ autoload/space_vlaze/mappings.vim | 9 +++++++ autoload/space_vlaze/menus.vim | 21 ++++++++++++++++ autoload/space_vlaze/player.vim | 3 +++ 8 files changed, 113 insertions(+) create mode 100644 autoload/space_vlaze.vim create mode 100644 autoload/space_vlaze/buffer.vim create mode 100644 autoload/space_vlaze/colors.vim create mode 100644 autoload/space_vlaze/game.vim create mode 100644 autoload/space_vlaze/help.vim create mode 100644 autoload/space_vlaze/mappings.vim create mode 100644 autoload/space_vlaze/menus.vim create mode 100644 autoload/space_vlaze/player.vim (limited to 'autoload') diff --git a/autoload/space_vlaze.vim b/autoload/space_vlaze.vim new file mode 100644 index 0000000..3b1db7a --- /dev/null +++ b/autoload/space_vlaze.vim @@ -0,0 +1,3 @@ +function! space_vlaze#Start() + call space_vlaze#buffer#Init() +endfunction diff --git a/autoload/space_vlaze/buffer.vim b/autoload/space_vlaze/buffer.vim new file mode 100644 index 0000000..dfbe47f --- /dev/null +++ b/autoload/space_vlaze/buffer.vim @@ -0,0 +1,17 @@ +function! space_vlaze#buffer#Init() + let s:buffer_name = 'Space Vlaze' + + if !buflisted(s:buffer_name) + " call space_vlaze#game#Init() + call space_vlaze#buffer#New() + call space_vlaze#menus#Start() + else + " enew + " execute 'b' + endif +endfunction + + +function space_vlaze#buffer#New() + execute 'edit ' . escape(s:buffer_name, ' ') +endfunction diff --git a/autoload/space_vlaze/colors.vim b/autoload/space_vlaze/colors.vim new file mode 100644 index 0000000..f10901b --- /dev/null +++ b/autoload/space_vlaze/colors.vim @@ -0,0 +1,3 @@ +function! space_vlaze#colors#Initialize() + +endfunction diff --git a/autoload/space_vlaze/game.vim b/autoload/space_vlaze/game.vim new file mode 100644 index 0000000..ab721a1 --- /dev/null +++ b/autoload/space_vlaze/game.vim @@ -0,0 +1,53 @@ +function! space_vlaze#game#Init() + let s:score = 0 + let s:start_time = localtime() + call space_vlaze#game#SetupWindow() + call space_vlaze#colors#Initialize() + call space_vlaze#game#InitializeBoard() +endfunction + + +function! space_vlaze#game#SetupWindow() + setlocal bufhidden=delete noswapfile nolazyredraw +endfunction + + +function! space_vlaze#game#InitializeBoard() + call space_vlaze#game#SetupBoard() + call space_vlaze#game#RenderBoard() +endfunction + + +function! space_vlaze#game#SetupBoard() + let s:board = [] + let s:BOARD_HEIGHT = 20 + let s:BOARD_WIDTH = 80 + + " Create 20-row by 80-column board initialised with spaces + let i = 0 + while i < s:BOARD_HEIGHT + let s:board = add(s:board, []) + + let j = 0 + while j < s:BOARD_WIDTH + let s:board[i] = add(s:board[i], ' ') + + let j += 1 + endwhile + + let i += 1 + endwhile + + " Initialise player to the middle of the board + let s:board[10][39] = space_vlaze#player#PlayerCharacter() +endfunction + + +function! space_vlaze#game#RenderBoard() + let i = 1 + while i <= s:BOARD_HEIGHT + call setline(i, join(s:board[i - 1], '')) + + let i += 1 + endwhile +endfunction diff --git a/autoload/space_vlaze/help.vim b/autoload/space_vlaze/help.vim new file mode 100644 index 0000000..7a1f8e9 --- /dev/null +++ b/autoload/space_vlaze/help.vim @@ -0,0 +1,4 @@ +function! space_vlaze#help#Show() + help space_vlaze + only +endfunction diff --git a/autoload/space_vlaze/mappings.vim b/autoload/space_vlaze/mappings.vim new file mode 100644 index 0000000..fdd2a37 --- /dev/null +++ b/autoload/space_vlaze/mappings.vim @@ -0,0 +1,9 @@ +function! space_vlaze#mappings#Initialize() + nnoremap q :call space_vlaze#game#Quit() + nnoremap p :call space_vlaze#game#Pause() + nnoremap h :call space_vlaze#player#MoveLeft() + nnoremap j :call space_vlaze#player#MoveDown() + nnoremap k :call space_vlaze#player#MoveUp() + nnoremap l :call space_vlaze#player#MoveRight() + nnoremap :call space_vlaze#player#FireBlasters() +endfunction diff --git a/autoload/space_vlaze/menus.vim b/autoload/space_vlaze/menus.vim new file mode 100644 index 0000000..90af0bb --- /dev/null +++ b/autoload/space_vlaze/menus.vim @@ -0,0 +1,21 @@ +function! space_vlaze#menus#Start() + echo 'Welcome to Space Vlaze' + let choice = space_vlaze#menus#Prompt( + \ 'What would you like to do? (start game (s), view leaderboard (l), view help (h): ') + + if choice ==? 's' + call space_vlaze#game#Init() + elseif choice ==? 'l' + call space_vlaze#leaderboard#Show() + elseif choice ==? 'h' + call space_vlaze#help#Show() + endif +endfunction + + +function! space_vlaze#menus#Prompt(message) + call inputsave() + let input = input(a:message) + call inputrestore() + return input +endfunction diff --git a/autoload/space_vlaze/player.vim b/autoload/space_vlaze/player.vim new file mode 100644 index 0000000..53583bd --- /dev/null +++ b/autoload/space_vlaze/player.vim @@ -0,0 +1,3 @@ +function! space_vlaze#player#PlayerCharacter() + return '◆' +endfunction -- cgit v1.2.3