예제 #1
0
파일: xs.go 프로젝트: rjkroege/go
func Play(pp []Piece, d *draw.Display) {
	pieces = pp
	N = len(pieces[0].d)
	initPieces()
	display = d
	screen = d.ScreenImage

	mousectl = d.InitMouse()
	kbdctl = d.InitKeyboard()
	rand.Seed(int64(time.Now().UnixNano() % (1e9 - 1)))
	for i, col := range txpix {
		tx[i], _ = d.AllocImage(image.Rect(0, 0, 1, 1), screen.Pix, true, col)
	}
	whitemask, _ = display.AllocImage(image.Rect(0, 0, 1, 1), draw.ARGB32, true, 0x7F7F7F7F)
	tsleep = 50
	timerc = time.Tick(time.Duration(tsleep/2) * time.Millisecond)
	suspc = make(chan bool)
	mousec = make(chan draw.Mouse)
	kbdc = make(chan rune)
	go suspproc()
	redraw(false)
	play()
}
예제 #2
0
파일: spacewar.go 프로젝트: rjkroege/go
func (m *SpacewarPDP1) Init(d *draw.Display) {
	m.disp = d
	m.mc = d.InitMouse()
	m.kc = d.InitKeyboard()
	m.screen = d.ScreenImage
	m.dx = m.screen.R.Dx()
	m.dy = m.screen.R.Dy()
	m.pix = make([][]uint8, m.dy)
	m.oldpix = make([][]uint8, m.dy)
	for i := range m.pix {
		m.pix[i] = make([]uint8, m.dx)
		m.oldpix[i] = make([]uint8, m.dx)
	}
	m.cmap = make([]*draw.Image, 256)
	for i := range m.cmap {
		var r, g, b draw.Color
		r = draw.Color(min(0, 255))
		g = draw.Color(min(i*2, 255))
		b = draw.Color(min(0, 255))
		m.cmap[i], _ = d.AllocImage(image.Rect(0, 0, 1, 1), d.ScreenImage.Pix, true, r<<24|g<<16|b<<8|0xff)
	}
	m.screen.Draw(m.screen.R, d.Black, nil, image.ZP)
}