/// <summary> /// Standard Konstruktor /// </summary> public Game() { _arrayGen = new ArrayGen(); _testArrays = _arrayGen.getTestArrays(); _winner = null; _fastestPlayer = null; _p1 = new Player(); _p2 = new Player(); }
/// <summary> /// Auswertung des Spiels. /// </summary> public void evaluate() { _p1.Programm.execute(_testArrays[0], true); _p2.Programm.execute(_testArrays[0], true); updateProgrammStats(); for (int i = 1; i < Config.RUNS.Length; i++) { _p1.Programm.execute(_testArrays[i], false); _p2.Programm.execute(_testArrays[i], false); updateProgrammStats(); } if (_p1.Time < _p2.Time) { _fastestPlayer = _p1; _p1.Points++; } else if (_p1.Time > _p2.Time) { _fastestPlayer = _p2; _p2.Points++; } if (_p1.Points > _p2.Points) { _winner = _p1; } else if (_p1.Points < _p2.Points) { _winner = _p2; } }
/// <summary> /// Initialisiert die Bausteinliste des uebergebenen Spielers. /// </summary> /// <param name="list">Bausteinliste</param> /// <param name="player">Besitzer der Bausteinliste</param> private void initPlayerWise(ObservableCollection<Statement> list, Player player) { //Allocations list.Add(new Statement(player.Programm, null, Config.EXECUTE.ALLOC_ALENGHT)); list.Add(new Statement(player.Programm, null, Config.EXECUTE.ALLOC_I_TO_J)); list.Add(new Statement(player.Programm, null, Config.EXECUTE.ALLOC_I_TO_MIN)); list.Add(new Statement(player.Programm, null, Config.EXECUTE.ALLOC_J_TO_MIN)); list.Add(new Statement(player.Programm, null, Config.EXECUTE.ALLOC_LEFT)); list.Add(new Statement(player.Programm, null, Config.EXECUTE.ALLOC_PIVOT)); list.Add(new Statement(player.Programm, null, Config.EXECUTE.ALLOC_RIGHT)); list.Add(new Statement(player.Programm, null, Config.EXECUTE.DEC_J)); list.Add(new Statement(player.Programm, null, Config.EXECUTE.DEC_J)); list.Add(new Statement(player.Programm, null, Config.EXECUTE.INC_I)); list.Add(new Statement(player.Programm, null, Config.EXECUTE.INC_I)); //Conditions list.Add(new ListStm(player.Programm, null, Config.EXECUTE.IF_AI_GREATER_AI_INC)); list.Add(new ListStm(player.Programm, null, Config.EXECUTE.IF_AJ_LESS_AMIN)); list.Add(new ListStm(player.Programm, null, Config.EXECUTE.IF_I_LESS_EQUALS_J)); list.Add(new ListStm(player.Programm, null, Config.EXECUTE.IF_I_LESS_RIGHT)); list.Add(new ListStm(player.Programm, null, Config.EXECUTE.IF_I_NOTEQUALS_MIN)); list.Add(new ListStm(player.Programm, null, Config.EXECUTE.IF_LEFT_LESS_J)); //Loops & If's list.Add(new ListStm(player.Programm, null, Config.EXECUTE.FOR_IN_BUBBLE)); list.Add(new ListStm(player.Programm, null, Config.EXECUTE.FOR_IN_SELECTION)); list.Add(new ListStm(player.Programm, null, Config.EXECUTE.FOR_INSERTION)); list.Add(new ListStm(player.Programm, null, Config.EXECUTE.FOR_OUT_BUBBLE)); list.Add(new ListStm(player.Programm, null, Config.EXECUTE.WHILE_AI_LESS_PIVOT)); list.Add(new ListStm(player.Programm, null, Config.EXECUTE.WHILE_AJ_GREATER_PIVOT)); list.Add(new ListStm(player.Programm, null, Config.EXECUTE.WHILE_I_LESS_EQUALS_J)); list.Add(new ListStm(player.Programm, null, Config.EXECUTE.WHILE_J_GREATER_NULL)); //MethodCalls list.Add(new Statement(player.Programm, null, Config.EXECUTE.CALL_SORT_LEFT)); list.Add(new Statement(player.Programm, null, Config.EXECUTE.CALL_SORT_RIGHT)); list.Add(new Statement(player.Programm, null, Config.EXECUTE.SWAP_AI_WITH_AI_INC)); list.Add(new Statement(player.Programm, null, Config.EXECUTE.SWAP_AI_WITH_AJ)); list.Add(new Statement(player.Programm, null, Config.EXECUTE.SWAP_AJ_WITH_AJ_DEC)); list.Add(new Statement(player.Programm, null, Config.EXECUTE.SWAP_AMIN_WITH_AI)); }
/// <summary> /// Schaltet das Spieler Overlay sichtbar und startet, wenn beide Spieler fertig sind den Timer _loadingTimer /// zur Darstellung des Ladebildschirms. /// </summary> /// <param name="player">Spieler der fertig ist</param> private void gameFin(Player player) { if (player == _game.P1) { _p1Fin = true; P1LoadingVisible = "Visible"; } else if (player == _game.P2) { _p2Fin = true; P2LoadingVisible = "Visible"; } if (_p1Fin && _p2Fin) { Waiting = Config.WAITING_RESULT; _gameTimer.Stop(); _loadingTimer.Start(); } }