예제 #1
0
파일: d.go 프로젝트: dforsyth/dvi-go
func StartScreen() {
	curses.Initscr()
	curses.Cbreak()
	curses.Noecho()
	curses.Nonl()
	curses.Stdwin.Keypad(true)
}
예제 #2
0
파일: draw.go 프로젝트: dforsyth/dvi-go
func initscreen(s *Dvi) {
	curses.Initscr()
	curses.Cbreak()
	curses.Noecho()
	curses.Nonl()
	curses.Start_color()
	curses.Stdwin.Keypad(true)

	s.w = curses.Stdwin
	curses.Init_pair(1, curses.COLOR_WHITE, curses.COLOR_BLUE)
	curses.Init_pair(2, curses.COLOR_RED, curses.COLOR_WHITE)
	curses.Init_pair(3, curses.COLOR_BLACK, curses.COLOR_YELLOW)
}
예제 #3
0
func startGoCurses() {
	curses.Initscr()

	if curses.Stdwin == nil {
		stopGoCurses()
		os.Exit(1)
	}

	curses.Noecho()
	curses.Curs_set(curses.CURS_HIDE)
	curses.Stdwin.Keypad(true)

	if err := curses.Start_color(); err != nil {
		fmt.Printf("%s\n", err.String())
		stopGoCurses()
		os.Exit(1)
	}
}
예제 #4
0
func main() {

	testmode := true
	Darkness := TestElement("Darkness")
	Light := TestElement("Light")
	Metal := TestElement("Metal")
	Fire := TestElement("Fire")

	Light.SetDamageMod(Metal, INEFFECTIVE)
	Darkness.SetDamageMod(Metal, INEFFECTIVE)
	Darkness.SetDamageMod(Light, SUPER_EFFECTIVE)
	Fire.SetDamageMod(Metal, SUPER_EFFECTIVE)
	//Metal.SetDamageMod(Darkness, SUPER_EFFECTIVE )

	//  80 => +8
	//  90 => +9
	// 100 => +10

	ava := TestCreature("Avatark",
		25, 80, 45, 70,
		12,
		Darkness,
	)

	fla := TestCreature("Flamex",
		170, 5, 45, 0,
		12,
		Fire,
	)

	ste := TestCreature("Steerox",
		65, 40, 80, 35,
		12,
		Metal,
	)

	if testmode {
		ava.SyncAccess(func() {
			name := ava.GetName()
			if "Avatark" != name {
				fmt.Println(name, "!=", "Avatark")
			}
			name = "John"
			if ava.SetName(name); ava.GetName() != name {
				fmt.Println(ava.GetName(), "!=", name)
			}
			name = "Avatark"
			if ava.SetName(name); ava.GetName() != name {
				fmt.Println(ava.GetName(), "!=", name)
			}

			str := ava.GetStrength()
			if ava.SetStrength(str); ava.GetStrength() != str || ava.GetStrength() != 40 {
				fmt.Println(ava.GetStrength(), "!=", str)
			}
		})

	}

	a := MainWorld.GetSingleArena()

	ava_com := TestCombattant(ava)
	fla_com := TestCombattant(fla)
	ste_com := TestCombattant(ste)

	a.SyncAccess(func() {

		if testmode {

			if ava.GetName() != ava_com.GetName() {
				fmt.Println(ava.GetName(), "!=", ava_com.GetName())
			}
			if ste.GetName() != ste_com.GetName() {
				fmt.Println(ste.GetName(), "!=", ste_com.GetName())
			}

			ava_com.SetStrength(45)
			ste_com.SetStrength(65)

			if ava.GetStrength() != 25 {
				fmt.Println(ava.GetStrength(), "!=", 25)
			}
			if ste.GetStrength() != 65 {
				fmt.Println(ste.GetStrength(), "!=", 65)
			}

			if ava_com.GetStrength() != 45 {
				fmt.Println(ava_com.GetStrength(), "!=", 45)
			}
			if ste_com.GetStrength() != 65 {
				fmt.Println(ste_com.GetStrength(), "!=", 65)
			}

			ava_com.SetStrength(25)
			ste_com.SetStrength(65)

		}

		a.SetCombattant(0, fla_com)

		a.SetCombattant(1, ste_com)
		a.SetCombattant(0, ava_com)

		if testmode {

			first, _ := a.GetCombattant(0)
			if first != ava_com {
				fmt.Println(first.GetName(), "!=", ava_com.GetName())
			}
			second, _ := a.GetCombattant(1)
			if second != ste_com {
				fmt.Println(second.GetName(), "!=", ste_com.GetName())
			}

			f_mod := first.GetArenaSpeedMod(a)
			s_mod := second.GetArenaSpeedMod(a)

			if f_mod != 1 {
				fmt.Println(f_mod, "!=", 1)
			}
			if s_mod <= f_mod {
				fmt.Println(s_mod, "<=", f_mod)
			}

		}
	})

	if _, err := curses.Initscr(); err != nil {
		panic("Window could not be initialised")
	}

	char.Start()
	defer curses.Endwin()
	curses.Stdwin.Addstr(0, 0, "Start?", curses.A_NORMAL)

	curses.Noecho()
	curses.Curs_set(curses.CURS_HIDE)
	curses.Stdwin.Keypad(true)
	curses.Stdwin.Refresh()
	char.GetWithTimeout(5e9)

	go func() {
		time_c := time.Tick(1e8)
		for _ = range time_c {
			if char.GetLast() == 'q' {
				break
			}
		}
		mainCIn <- true
		mainQuit <- true
	}()

	c1, _ := a.GetCombattant(0)
	c2, _ := a.GetCombattant(1)

	var foo1, foo2 func()

	p1 := TestSpecPower("Dark Ray", 30, 1.0, 3.0, Darkness)
	p2 := TestPhysPower("Metal Claw", 30, 1.0, 3.0, Metal)
	p3 := TestPhysPower("Flame Fist", 20, 1.0, 2.0, Fire)

	ava.AddPower(p1)
	ste.AddPower(p2)
	fla.AddPower(p3)

	foo1 = func() {
		MainWorld.PauseCombat(true)

		if c1.GetHp() > 0 {
			for p := range c1.GetPowers() {
				if p != nil {
					p.Use()
				}
			}
			if c2.GetHp() > 0 {
				sleep(c1, foo1)
			} else {
				a.SetCombattant(1, nil)
			}
		}

		MainWorld.PauseCombat(false)
	}

	foo2 = func() {
		MainWorld.PauseCombat(true)

		if c2.GetHp() > 0 {
			for p := range c1.GetPowers() {
				if p != nil {
					p.Use()
				}
			}
			if c1.GetHp() > 0 {
				sleep(c2, foo2)
			} else {
				a.SetCombattant(0, nil)
			}
		}

		MainWorld.PauseCombat(false)
	}

	if c1.SetSleepTime(a, 3e9) {
		sleep(c1, foo1)
	}

	if c2.SetSleepTime(a, 3e9) {
		sleep(c2, foo2)
	}

	rand.Seed(time.Nanoseconds())
	go mainloop()
	go viewloop()

	<-mainQuit
}