You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
1.3 KiB
83 lines
1.3 KiB
package main
|
|
|
|
import (
|
|
"github.com/veandco/go-sdl2/sdl"
|
|
"log"
|
|
)
|
|
|
|
var (
|
|
winWidth = 800
|
|
winHeight = 600
|
|
state = start
|
|
)
|
|
|
|
func main() {
|
|
err := sdl.Init(sdl.INIT_EVERYTHING)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer sdl.Quit()
|
|
|
|
window, err := sdl.CreateWindow(
|
|
"PONG",
|
|
sdl.WINDOWPOS_CENTERED,
|
|
sdl.WINDOWPOS_CENTERED,
|
|
int32(winWidth),
|
|
int32(winHeight),
|
|
sdl.WINDOW_SHOWN)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer window.Destroy()
|
|
|
|
renderer, err := sdl.CreateRenderer(window, -1, sdl.RENDERER_ACCELERATED)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer renderer.Destroy()
|
|
|
|
tex, err := renderer.CreateTexture(
|
|
sdl.PIXELFORMAT_ABGR8888,
|
|
sdl.TEXTUREACCESS_STREAMING,
|
|
int32(winWidth),
|
|
int32(winHeight))
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer tex.Destroy()
|
|
|
|
player1 := paddle{
|
|
pos: pos{50, 300},
|
|
w: 20,
|
|
h: 100,
|
|
speed: 300,
|
|
score: 0,
|
|
color: sdl.Color{255, 0, 0, 255},
|
|
}
|
|
|
|
player2 := paddle{
|
|
pos: pos{750, 300},
|
|
w: 20,
|
|
h: 100,
|
|
speed: 300,
|
|
score: 0,
|
|
color: sdl.Color{0, 255, 0, 255},
|
|
}
|
|
|
|
ball := ball{
|
|
pos: pos{400, 300},
|
|
radius: 20,
|
|
dx: 400,
|
|
dy: 400,
|
|
color: sdl.Color{0, 0, 255, 255},
|
|
}
|
|
|
|
keyState := sdl.GetKeyboardState()
|
|
pixels := make([]byte, winHeight*winWidth*4)
|
|
|
|
resetBall(&ball)
|
|
|
|
gameLoop(pixels, player1, player2, ball, renderer, tex, keyState)
|
|
|
|
}
|