🎉 Initial Commit of Basic things like movement of player
This commit is contained in:
		
							
								
								
									
										8
									
								
								.idea/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								.idea/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| # Default ignored files | ||||
| /shelf/ | ||||
| /workspace.xml | ||||
| # Editor-based HTTP Client requests | ||||
| /httpRequests/ | ||||
| # Datasource local storage ignored files | ||||
| /dataSources/ | ||||
| /dataSources.local.xml | ||||
							
								
								
									
										9
									
								
								.idea/CodingLand.iml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								.idea/CodingLand.iml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <module type="WEB_MODULE" version="4"> | ||||
|   <component name="Go" enabled="true" /> | ||||
|   <component name="NewModuleRootManager"> | ||||
|     <content url="file://$MODULE_DIR$" /> | ||||
|     <orderEntry type="inheritedJdk" /> | ||||
|     <orderEntry type="sourceFolder" forTests="false" /> | ||||
|   </component> | ||||
| </module> | ||||
							
								
								
									
										8
									
								
								.idea/modules.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								.idea/modules.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <project version="4"> | ||||
|   <component name="ProjectModuleManager"> | ||||
|     <modules> | ||||
|       <module fileurl="file://$PROJECT_DIR$/.idea/CodingLand.iml" filepath="$PROJECT_DIR$/.idea/CodingLand.iml" /> | ||||
|     </modules> | ||||
|   </component> | ||||
| </project> | ||||
							
								
								
									
										5
									
								
								go.mod
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								go.mod
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| module git.solsynth.dev/highland/codingland | ||||
|  | ||||
| go 1.22.5 | ||||
|  | ||||
| require github.com/veandco/go-sdl2 v0.4.40 | ||||
							
								
								
									
										2
									
								
								go.sum
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								go.sum
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| github.com/veandco/go-sdl2 v0.4.40 h1:fZv6wC3zz1Xt167P09gazawnpa0KY5LM7JAvKpX9d/U= | ||||
| github.com/veandco/go-sdl2 v0.4.40/go.mod h1:OROqMhHD43nT4/i9crJukyVecjPNYYuCofep6SNiAjY= | ||||
							
								
								
									
										5
									
								
								pkg/internal/common/vector2d.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								pkg/internal/common/vector2d.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| package common | ||||
|  | ||||
| type Vector2D struct { | ||||
| 	X, Y float64 | ||||
| } | ||||
							
								
								
									
										38
									
								
								pkg/internal/entities/player.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								pkg/internal/entities/player.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | ||||
| package entities | ||||
|  | ||||
| import ( | ||||
| 	"git.solsynth.dev/highland/codingland/pkg/internal/common" | ||||
| 	"github.com/veandco/go-sdl2/sdl" | ||||
| ) | ||||
|  | ||||
| const ( | ||||
| 	Acceleration = 0.5 | ||||
| 	Friction     = 0.9 | ||||
| ) | ||||
|  | ||||
| type Player struct { | ||||
| 	Position common.Vector2D | ||||
| 	Size     common.Vector2D | ||||
| 	Velocity common.Vector2D | ||||
| } | ||||
|  | ||||
| func (p *Player) Move(deltaX, deltaY float64) { | ||||
| 	p.Velocity.X += deltaX * Acceleration | ||||
| 	p.Velocity.Y += deltaY * Acceleration | ||||
|  | ||||
| 	p.Position.X += p.Velocity.X | ||||
| 	p.Position.Y += p.Velocity.Y | ||||
|  | ||||
| 	p.Velocity.X *= Friction | ||||
| 	p.Velocity.Y *= Friction | ||||
| } | ||||
|  | ||||
| func (p *Player) Draw(pen *sdl.Renderer) { | ||||
| 	pen.SetDrawColor(255, 255, 255, 255) | ||||
| 	pen.FillRect(&sdl.Rect{ | ||||
| 		X: int32(p.Position.X), | ||||
| 		Y: int32(p.Position.Y), | ||||
| 		W: int32(p.Size.X), | ||||
| 		H: int32(p.Size.Y), | ||||
| 	}) | ||||
| } | ||||
							
								
								
									
										77
									
								
								pkg/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								pkg/main.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,77 @@ | ||||
| package main | ||||
|  | ||||
| import ( | ||||
| 	"git.solsynth.dev/highland/codingland/pkg/internal/common" | ||||
| 	"git.solsynth.dev/highland/codingland/pkg/internal/entities" | ||||
| 	"log" | ||||
| 	"runtime" | ||||
|  | ||||
| 	"github.com/veandco/go-sdl2/sdl" | ||||
| ) | ||||
|  | ||||
| const ( | ||||
| 	windowWidth  = 640 | ||||
| 	windowHeight = 480 | ||||
| 	playerSize   = 50 | ||||
| ) | ||||
|  | ||||
| func init() { | ||||
| 	runtime.LockOSThread() | ||||
| } | ||||
|  | ||||
| func main() { | ||||
| 	if err := sdl.Init(sdl.INIT_EVERYTHING); err != nil { | ||||
| 		log.Fatalf("Failed to initialize SDL: %s", err) | ||||
| 	} | ||||
| 	defer sdl.Quit() | ||||
|  | ||||
| 	window, err := sdl.CreateWindow("CodingLand", sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED, windowWidth, windowHeight, sdl.WINDOW_SHOWN) | ||||
| 	if err != nil { | ||||
| 		log.Fatalf("Failed to create window: %s", err) | ||||
| 	} | ||||
| 	defer window.Destroy() | ||||
|  | ||||
| 	renderer, err := sdl.CreateRenderer(window, -1, sdl.RENDERER_ACCELERATED|sdl.RENDERER_PRESENTVSYNC) | ||||
| 	if err != nil { | ||||
| 		log.Fatalf("Failed to create renderer: %s", err) | ||||
| 	} | ||||
| 	defer renderer.Destroy() | ||||
|  | ||||
| 	player := &entities.Player{ | ||||
| 		Position: common.Vector2D{X: windowWidth / 2, Y: windowHeight / 2}, | ||||
| 		Size:     common.Vector2D{X: playerSize, Y: playerSize}, | ||||
| 	} | ||||
|  | ||||
| 	running := true | ||||
| 	for running { | ||||
| 		for event := sdl.PollEvent(); event != nil; event = sdl.PollEvent() { | ||||
| 			switch event.(type) { | ||||
| 			case *sdl.QuitEvent: | ||||
| 				running = false | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		keys := sdl.GetKeyboardState() | ||||
| 		if keys[sdl.SCANCODE_UP] == 1 || keys[sdl.SCANCODE_W] == 1 { | ||||
| 			player.Move(0, -1) | ||||
| 		} | ||||
| 		if keys[sdl.SCANCODE_DOWN] == 1 || keys[sdl.SCANCODE_S] == 1 { | ||||
| 			player.Move(0, 1) | ||||
| 		} | ||||
| 		if keys[sdl.SCANCODE_LEFT] == 1 || keys[sdl.SCANCODE_A] == 1 { | ||||
| 			player.Move(-1, 0) | ||||
| 		} | ||||
| 		if keys[sdl.SCANCODE_RIGHT] == 1 || keys[sdl.SCANCODE_D] == 1 { | ||||
| 			player.Move(1, 0) | ||||
| 		} | ||||
|  | ||||
| 		player.Move(0, 0) | ||||
|  | ||||
| 		renderer.SetDrawColor(0, 0, 0, 255) | ||||
| 		renderer.Clear() | ||||
|  | ||||
| 		player.Draw(renderer) | ||||
|  | ||||
| 		renderer.Present() | ||||
| 	} | ||||
| } | ||||
		Reference in New Issue
	
	Block a user