From 22e73779f55b051d34fc0490fbb55045f3f321d9 Mon Sep 17 00:00:00 2001 From: Charles Date: Sun, 8 Dec 2019 10:09:30 +0100 Subject: Snake Drawing --- graphics.adb | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) (limited to 'graphics.adb') diff --git a/graphics.adb b/graphics.adb index 2cdea69..e9e4b71 100644 --- a/graphics.adb +++ b/graphics.adb @@ -1,29 +1,37 @@ with Ada.Text_IO; use Ada.Text_IO; -with Graphics; -use Graphics; - with SDL; with SDL.Timers; +with SDL.Video.Rectangles; with SDL.Events; with SDL.Events.Events; with SDL.Video.Windows; with SDL.Video.Windows.Makers; with SDL.Video.Renderers; with SDL.Video.Renderers.Makers; +use SDL.Video; + +with Graphics, Game; +use Graphics, Game; + +with Interfaces.C; +use Interfaces.C; package body Graphics is + use P_Position_Queue; + procedure Init(state: out T_State) is begin if not SDL.Initialise then Put("Error"); end if; - SDL.Video.Windows.Makers.Create(state.window, WINDOW_TITLE, WINDOW_X, WINDOW_Y, + Windows.Makers.Create(state.window, WINDOW_TITLE, WINDOW_X, WINDOW_Y, WINDOW_WIDTH, WINDOW_HEIGHT); - SDL.Video.Renderers.Makers.Create(state.renderer, state.window); + Renderers.Makers.Create(state.renderer, state.window); state.running := true; + Init(state.game, 10, 10); end Init; procedure Quit(state: T_State) is @@ -52,9 +60,26 @@ package body Graphics is null; end Event_Handler; - procedure Update(state: T_State) is + procedure Update(state: in out T_State) is + cursor: T_List := state.game.snake.front; begin - null; + Renderers.Set_Draw_Colour(state.renderer, COLOR_BLACK); + Renderers.Clear(state.renderer); + + Renderers.Set_Draw_Colour(state.renderer, COLOR_WHITE); + while cursor /= null loop + Draw_Square(state, cursor.all.data); + cursor := cursor.all.next; + end loop; + Renderers.Present(state.renderer); end Update; + procedure Draw_Square(state: in out T_State; + pos: T_Position) is + rect: Rectangles.Rectangle; + begin + rect := ((C.int(pos.y) - 1) * 20, (C.int(pos.x) - 1) * 20, 20, 20); + Renderers.Fill(state.renderer, rect); + end Draw_Square; + end Graphics; -- cgit