コード例 #1
0
        private void MoveAuto(int discNumber, int fromPole, int auxPole, int toPole)
        {
            if (discNumber == 1)
            {
                Console.Clear();
                MoveRecord record = towers.Move(fromPole, toPole);
                moveRecords.Enqueue(record);
                TowerUtilities.DisplayTowers(GetTowers());
                WriteLine($"\nMove {towers.NumberOfMoves} complete. Successfully moved disc from tower {fromPole} to tower {toPole}");
                if (towers.IsComplete)
                {
                    WriteLine($"Number of Moves: {towers.NumberOfMoves}");
                }
                Thread.Sleep(500);

                return;
            }
            else
            {
                MoveAuto(discNumber - 1, fromPole, toPole, auxPole);

                Console.Clear();
                MoveRecord record = towers.Move(fromPole, toPole);
                moveRecords.Enqueue(record);
                TowerUtilities.DisplayTowers(GetTowers());
                WriteLine($"\nMove {towers.NumberOfMoves} complete. Successfully moved disc from tower {fromPole} to tower {toPole}");
                Thread.Sleep(500);

                MoveAuto(discNumber - 1, auxPole, fromPole, toPole);
            }
        }
コード例 #2
0
        private void MoveStep(int fromPole, int toPole)
        {
            MoveRecord record = null;
            int        source = fromPole, dest = toPole;

            int[][] towersArr = towers.ToArray();

            // Interchange fromPole & toPole, if required
            // If frompole is empty
            if (towersArr[fromPole - 1].Length == 0)
            {
                source = toPole;
                dest   = fromPole;
            }
            // When top disk of fromPole > top disk of toPole
            else if (towersArr[toPole - 1].Length > 0 && (towersArr[fromPole - 1][0] > towersArr[toPole - 1][0]))
            {
                source = toPole;
                dest   = fromPole;
            }

            record = towers.Move(source, dest);
            if (record != null)
            {
                moveRecords.Enqueue(record);
                TowerUtilities.DisplayTowers(GetTowers());
                WriteLine($"\nMove {towers.NumberOfMoves} complete. Successfully moved disc from tower {source} to tower {dest}");
            }
            else
            {
                WriteLine("ERROR: Fail to move - record is null");
            }
        }
コード例 #3
0
        private void RedoMove()
        {
            try
            {
                if (redoMoves.Count == 0 || redoMoves.Peek() == null)
                {
                    throw new InvalidOperationException("No moves to Redo.");
                }

                // Get record from redo stack
                MoveRecord recordToUndo = redoMoves.Pop();
                // Make the move
                MoveRecord record = towers.Move(recordToUndo.FromPole, recordToUndo.ToPole);
                // Add the move to queue
                moveRecords.Enqueue(record);
                // Push it to undo stack
                undoMoves.Push(recordToUndo);

                Console.Clear();
                TowerUtilities.DisplayTowers(GetTowers());
                WriteLine($"\nMove {towers.NumberOfMoves} complete by redo of move {recordToUndo.MoveNumber}. Disc {recordToUndo.DiscNumber} returned to tower {recordToUndo.ToPole} from tower {recordToUndo.FromPole}");
            }
            catch (Exception ex)
            {
                WriteLine($"\n{ex.GetType().Name}: {ex.Message}");
            }

            return;
        }
コード例 #4
0
        private void NormalMove(int fromPole, int toPole)
        {
            try
            {
                MoveRecord record = towers.Move(fromPole, toPole);
                moveRecords.Enqueue(record);
                undoMoves.Push(record);
                redoMoves.Clear();

                Console.Clear();
                TowerUtilities.DisplayTowers(GetTowers());
                WriteLine($"\nMove {towers.NumberOfMoves} complete. Successfully moved disc from tower {fromPole} to tower {toPole}");

                // Game is complete
                if (towers.IsComplete)
                {
                    string msg = towers.NumberOfMoves == towers.MinimumPossibleMoves ?
                                 $"It took you {towers.NumberOfMoves} moves. Congrats! That's the minimum!" :
                                 $"It took you {towers.NumberOfMoves} moves. Not bad, but it can be done in {towers.MinimumPossibleMoves} moves. Try again.";

                    WriteLine(msg);
                }
            }
            catch (Exception ex)
            {
                WriteLine($"\n{ex.GetType().Name}: {ex.Message}");
            }

            return;
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: Sam-Carson/TowerOfHanoi
 public static void GameComplete(Towers pMyTowers, int pFrom, int pTo, Stack <MoveRecord> pUndoStack, Stack <MoveRecord> pRedoStack)
 {
     if (pMyTowers.IsComplete)
     {
         WriteLine($"\nCongratulations, you completed the puzzle in {pMyTowers.NumberOfMoves} moves.");
         if (pMyTowers.MinimumPossibleMoves == pMyTowers.NumberOfMoves)
         {
             WriteLine($"\nThat's the fewest number of moves possible. I ANOINT YOU THE RULER OF HANOI!");
         }
         else
         {
             WriteLine($"\nYou completed the puzzle in {pMyTowers.NumberOfMoves} moves but the fewest possible is {pMyTowers.MinimumPossibleMoves}");
             WriteLine("\nLet's give it another shot. What do you say?");
         }
     }
     else if (pFrom == -2) // redo
     {
         MoveRecord redoMoveDetails = pUndoStack.Peek();
         WriteLine($"\nMove {pMyTowers.NumberOfMoves} complete by redo of move {pMyTowers.NumberOfMoves - 1}. Disc {redoMoveDetails.Disc} restored to tower {redoMoveDetails.To} from tower {redoMoveDetails.From}.");
     }
     else if (pFrom == -3) // undo
     {
         MoveRecord undoMoveDetails = pRedoStack.Peek();
         WriteLine($"\nMove {pMyTowers.NumberOfMoves} complete by undo of move {undoMoveDetails.MoveNumber}. Disc {undoMoveDetails.Disc} restored to tower {undoMoveDetails.From} from tower {undoMoveDetails.To}.");
     }
     else
     {
         WriteLine($"\nMove {pMyTowers.NumberOfMoves} complete. Successfully moved disc {pUndoStack.Peek().Disc} from tower {pFrom} to tower {pTo}.");
     }
 }
コード例 #6
0
ファイル: Program.cs プロジェクト: Sam-Carson/TowerOfHanoi
        public static MoveRecord Undo(Stack <MoveRecord> pUndoStack, Stack <MoveRecord> pRedoStack, Towers pMyTowers, Queue <MoveRecord> pRecordedMovesQ)
        {
            MoveRecord undoMoveRecord = pUndoStack.Pop();

            pRedoStack.Push(undoMoveRecord);
            MoveRecord postUndoMove = pMyTowers.Move(undoMoveRecord.To, undoMoveRecord.From);

            pRecordedMovesQ.Enqueue(postUndoMove);
            return(postUndoMove);
        }
コード例 #7
0
ファイル: Program.cs プロジェクト: hahsieh/HanoiTower
 private static void MoveWithStateDisplay(MoveRecord theRecord)
 {
     DisplayTowers(theRecord.TowerState);
     WriteLine();
     if (theRecord.MoveNumber == 0)
     {
         Thread.Sleep(250);
         return;
     }
     WriteLine($" Move {theRecord.MoveNumber}: Disc {theRecord.Disc} was moved from pole {theRecord.From} to pole {theRecord.To}.");
     Thread.Sleep(250);
 }
コード例 #8
0
ファイル: Program.cs プロジェクト: Sam-Carson/TowerOfHanoi
 public static string SBSUpdate(MoveRecord pRecordedMove, Queue <MoveRecord> moveQueue, Towers pMyTowers)
 {
     moveQueue.Enqueue(pRecordedMove);
     Update(pMyTowers);
     IterativeMoveMessage(pRecordedMove);
     if (pMyTowers.IsComplete)
     {
         WriteLine($"\nStep-through completed. Number of moves: {pRecordedMove.MoveNumber}");
         return("X");
     }
     WriteLine("\nPress any key to see the next move or 'X' to exit: ");
     return(ReadKey().KeyChar.ToString().ToUpper());
 }
コード例 #9
0
ファイル: Program.cs プロジェクト: Sam-Carson/TowerOfHanoi
 public static void AutoPlay(int n, int source, int destination, int aux, Towers pMyTowers, Queue <MoveRecord> moveQueue)
 {
     if (n > 0)
     {
         AutoPlay(n - 1, source, aux, destination, pMyTowers, moveQueue);
         Thread.Sleep(250);
         MoveRecord recordedMove = pMyTowers.Move(source, destination);
         moveQueue.Enqueue(recordedMove);
         Update(pMyTowers);
         WriteLine($"Move {moveQueue.Count} complete. Successfully moved disc {recordedMove.Disc} from tower {recordedMove.From} to tower {recordedMove.To}.");
         AutoPlay(n - 1, aux, destination, source, pMyTowers, moveQueue);
     }
 }
コード例 #10
0
ファイル: UnitTest1.cs プロジェクト: Sam-Carson/TowerOfHanoi
        public void ReturnMoveRecord_WhenValidMoveMade()
        {
            //arrange
            int        numberOfDiscs = 5;
            int        to            = 3;
            int        from          = 1;
            Towers     testTower     = new Towers(numberOfDiscs);
            MoveRecord testRecord    = new MoveRecord(1, 1, 1, 3);

            //act
            MoveRecord tRecordedMove = testTower.Move(from, to);

            //assert
            Assert.ReferenceEquals(testRecord, tRecordedMove);
        }
コード例 #11
0
 static int JumpTo(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 2);
         MoveRecord          obj  = (MoveRecord)ToLua.CheckObject(L, 1, typeof(MoveRecord));
         UnityEngine.Vector3 arg0 = ToLua.ToVector3(L, 2);
         obj.JumpTo(arg0);
         return(0);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
コード例 #12
0
 static int GetInertiaSpeed(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 2);
         MoveRecord          obj  = (MoveRecord)ToLua.CheckObject(L, 1, typeof(MoveRecord));
         float               arg0 = (float)LuaDLL.luaL_checknumber(L, 2);
         UnityEngine.Vector3 o    = obj.GetInertiaSpeed(arg0);
         ToLua.Push(L, o);
         return(1);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
コード例 #13
0
ファイル: RepoService.cs プロジェクト: Makajda/Allgregator
        internal async Task LinkMoved(Data data, MoveRecord moveRecord)
        {
            if (moveRecord.Id == data.Id)
            {
                await LoadLinks(data);

                if (data.Linked.Links == null)
                {
                    data.Linked.Links = new ObservableCollection <Link>();
                }

                data.Linked.Links.Add(moveRecord.Link);
                data.Linked.IsNeedToSave = true;
                await SaveLinks(data);
            }
        }
コード例 #14
0
        MoveRecord IMoveRecordDao.getSingleMoveRecord(int RemoveID)
        {
            MoveRecord MoveRecord = new MoveRecord();

            try
            {
                if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                }
                string        sql = "select * from move where moveid = :moveid";
                OracleCommand cmd = new OracleCommand(sql, con);
                cmd.Parameters.Add(":moveid", OracleDbType.Int32);

                cmd.Parameters[":moveid"].Value = RemoveID;

                OracleDataReader DataReader = cmd.ExecuteReader();
                if (DataReader.Read())
                {
                    int      id          = int.Parse(DataReader["moveid"].ToString());
                    int      numbers     = int.Parse(DataReader["numbers"].ToString());
                    DateTime time        = (DateTime)DataReader["time"];
                    int      warehouseid = int.Parse(DataReader["warehouseid"].ToString());
                    int      employeeid  = int.Parse(DataReader["employeeid"].ToString());

                    MoveRecord.RemoveID    = id;
                    MoveRecord.RemoveTotal = numbers;
                    MoveRecord.RemoveTime  = time;
                    //    MoveRecord.WareHouse.WareHouseID = warehouseid;
                    IEmployeeDao eDao = new EmployeeDao();
                    //     MoveRecord.Employee = eDao.getSingleEmployee(employeeid);
                    MoveRecord.Employee.EmployeeID = employeeid;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                if (con.State == ConnectionState.Open)
                {
                    con.Close();
                }
            }
            return(MoveRecord);
        }
コード例 #15
0
    static int get_CurrentPos(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            MoveRecord          obj = (MoveRecord)o;
            UnityEngine.Vector3 ret = obj.CurrentPos;
            ToLua.Push(L, ret);
            return(1);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o == null ? "attempt to index CurrentPos on a nil value" : e.Message));
        }
    }
コード例 #16
0
    static int get_m_MoveRecord(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            ScrollObject obj = (ScrollObject)o;
            MoveRecord   ret = obj.m_MoveRecord;
            ToLua.PushObject(L, ret);
            return(1);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o == null ? "attempt to index m_MoveRecord on a nil value" : e.Message));
        }
    }
コード例 #17
0
    static int set_CurrentPos(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            MoveRecord          obj  = (MoveRecord)o;
            UnityEngine.Vector3 arg0 = ToLua.ToVector3(L, 2);
            obj.CurrentPos = arg0;
            return(0);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o == null ? "attempt to index CurrentPos on a nil value" : e.Message));
        }
    }
コード例 #18
0
    static int set_m_MoveRecord(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            ScrollObject obj  = (ScrollObject)o;
            MoveRecord   arg0 = (MoveRecord)ToLua.CheckObject(L, 2, typeof(MoveRecord));
            obj.m_MoveRecord = arg0;
            return(0);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o == null ? "attempt to index m_MoveRecord on a nil value" : e.Message));
        }
    }
コード例 #19
0
ファイル: GameState.cs プロジェクト: GabeGallagher/TicTacToe
    private void Start()
    {
        //initialize board
        board = new int[size, size];
        for (int i = 0; i < size; i++)
        {
            for (int j = 0; j < size; j++)
            {
                board[i, j] = 0;
            }
        }

        //randomly assign player pieces
        int pieceIndex = Random.Range(0, pieces.Count);

        playerOnePiece = pieces[pieceIndex];
        List <GameObject> newSelection = new List <GameObject>();

        for (int i = 0; i < pieces.Count; i++)
        {
            if (i != pieceIndex)
            {
                newSelection.Add(pieces[i]);
            }
        }
        playerTwoPiece = newSelection[Random.Range(0, newSelection.Count)];

        //Functionality for buttons that appear when the game is over
        buttons = GameObject.Find("ButtonsObject");
        if (buttons == null)
        {
            Debug.Log("Unable to find reference to ButtonsObject");
        }
        else
        {
            buttons.SetActive(false);
        }

        //Setting up the move recorder
        //since board is zero indexed, { -1, -1 } is functionally the empty board move
        MoveRecord initialBoardState = new MoveRecord(new int[] { -1, -1 }, false);

        moveRecorder = new MoveRecorder();
        moveRecorder.Turn(initialBoardState, null);
    }
コード例 #20
0
        //只负责初始化员工的id,仓库的id
        List <MoveRecord> IMoveRecordDao.getAllMoveRecordList(DateTime starttime, DateTime endtime)
        {
            List <MoveRecord> MoveRecordList = new List <MoveRecord>();

            try
            {
                if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                }
                string        sql = "select * from move where time between :S_time and :E_time";
                OracleCommand cmd = new OracleCommand(sql, con);
                cmd.Parameters.Add(":S_time", OracleDbType.TimeStamp);
                cmd.Parameters.Add(":E_time", OracleDbType.TimeStamp);
                cmd.Parameters[0].Value = starttime;
                cmd.Parameters[1].Value = endtime;
                OracleDataReader DataReader = cmd.ExecuteReader();
                while (DataReader.Read())
                {
                    MoveRecord moverecord  = new MoveRecord();
                    int        id          = int.Parse(DataReader["moveid"].ToString());
                    int        numbers     = int.Parse(DataReader["numbers"].ToString());
                    DateTime   time        = (DateTime)DataReader["time"];
                    int        warehouseid = int.Parse(DataReader["warehouseid"].ToString());
                    int        employeeid  = int.Parse(DataReader["employeeid"].ToString());

                    moverecord.RemoveID              = id;
                    moverecord.RemoveTotal           = numbers;
                    moverecord.RemoveTime            = time;
                    moverecord.WareHouse.WareHouseID = warehouseid;
                    moverecord.Employee.EmployeeID   = employeeid;

                    MoveRecordList.Add(moverecord);
                }
            }
            catch (Exception ex)
            {
                Console.Out.WriteLine(ex.ToString());
            }
            finally
            {
                con.Close();
            }
            return(MoveRecordList);
        }
コード例 #21
0
        //只负责初始化员工的id,仓库的id
        List <MoveRecord> IMoveRecordDao.getAllMoveRecordList()
        {
            List <MoveRecord> MoveRecordList = new List <MoveRecord>();

            try
            {
                if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                }
                string        sql = "select * from move";
                OracleCommand cmd = new OracleCommand(sql, con);

                OracleDataReader DataReader = cmd.ExecuteReader();
                while (DataReader.Read())
                {
                    MoveRecord moverecord  = new MoveRecord();
                    int        id          = int.Parse(DataReader["moveid"].ToString());
                    int        numbers     = int.Parse(DataReader["numbers"].ToString());
                    DateTime   time        = (DateTime)DataReader["time"];
                    int        warehouseid = int.Parse(DataReader["warehouseid"].ToString());
                    int        employeeid  = int.Parse(DataReader["employeeid"].ToString());

                    moverecord.RemoveID              = id;
                    moverecord.RemoveTotal           = numbers;
                    moverecord.RemoveTime            = time;
                    moverecord.WareHouse.WareHouseID = warehouseid;
                    moverecord.Employee.EmployeeID   = employeeid;

                    MoveRecordList.Add(moverecord);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                con.Close();
            }
            return(MoveRecordList);
        }
コード例 #22
0
ファイル: GameState.cs プロジェクト: GabeGallagher/TicTacToe
    public void Turn(MoveRecord move, Node previousMove)
    {
        Node turn = new Node(move);

        if (head == null)
        {
            head = turn;
        }

        if (previousMove == null)
        {
            turn.SetPrev(head);
        }
        else
        {
            turn.SetPrev(previousMove);
        }
        previousMove.SetNext(turn);
        turn.SetNext(null);
        tail = turn;
    }
コード例 #23
0
    static int _CreateMoveRecord(IntPtr L)
    {
        try
        {
            int count = LuaDLL.lua_gettop(L);

            if (count == 0)
            {
                MoveRecord obj = new MoveRecord();
                ToLua.PushObject(L, obj);
                return(1);
            }
            else
            {
                return(LuaDLL.luaL_throw(L, "invalid arguments to ctor method: MoveRecord.New"));
            }
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
コード例 #24
0
ファイル: GameState.cs プロジェクト: GabeGallagher/TicTacToe
    //place pieces on board
    public void InstantiatePiece(GameObject tile, GameObject piecePrefab, int scoreInt)
    {
        TileControl tileControl = tile.GetComponent <TileControl>();

        GameObject piece = Instantiate(piecePrefab, transform.position, Quaternion.identity)
                           as GameObject;

        piece.transform.parent        = tile.transform;
        piece.transform.localPosition = Vector2.zero;
        playerOneTurn = false;
        tileControl.SetIsPlaceable(false);
        tileControl.GetSprite().color = Color.white;
        board[tileControl.location[0], tileControl.location[1]] = scoreInt;

        MoveRecord turn = new MoveRecord(tileControl.location, playerOneTurn);

        moveRecorder.Turn(turn, previousMove);
        if (turnNumber >= (size * 2) - 1)
        {
            CheckWin(tileControl.location);
        }
    }
コード例 #25
0
        public static int RecursiveAutoSolve(int diskNumber, int pTower1, int pTower3, int pTower2, Queue <MoveRecord> pQueue, int pNumberOfMoves)
        {
            Queue <MoveRecord> tempMoveQueue = pQueue;
            MoveRecord         tempMoveRecord;
            int tempMoves = pNumberOfMoves;

            if (diskNumber == 1)
            {
                tempMoveRecord = new MoveRecord(tempMoves, diskNumber, pTower1, pTower3);
                tempMoveQueue.Enqueue(tempMoveRecord);

                tempMoves++;
                return(tempMoves);
            }

            tempMoves = RecursiveAutoSolve(diskNumber - 1, pTower1, pTower2, pTower3, tempMoveQueue, tempMoves);

            tempMoveRecord = new MoveRecord(tempMoves, diskNumber, pTower1, pTower3);
            tempMoveQueue.Enqueue(tempMoveRecord);
            tempMoves++;
            return(RecursiveAutoSolve(diskNumber - 1, pTower2, pTower3, pTower1, tempMoveQueue, tempMoves));
        }
コード例 #26
0
        private void confirmGoodButton_Click(object sender, RoutedEventArgs e)
        {
            IWareHouseDao    whd           = new WareHouseDao();
            IMoveRecordDao   mrd           = new MoveRecordDao();
            IGoodDao         igd           = new GoodDao();
            MoveRecord       moverecord    = new MoveRecord();
            List <WareHouse> warehouseList = whd.getWareHouseList();
            Good             good          = new Good();
            bool             find          = false;

            for (int j = 0; j < warehouseList.Count; j++)
            {
                if (Convert.ToInt32(warehouseIdBox.Text) == warehouseList[j].WareHouseID)
                {
                    find = true;
                    moverecord.WareHouse = warehouseList[j];
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        //遍历查询仓库
                        good = igd.getSingleGood(Convert.ToInt32(dt.Rows[i][0]));
                        moverecord.addGood(good, Convert.ToInt32(dt.Rows[i][2]));
                    }
                }
            }
            if (!find)
            {
                MessageBox.Show("仓库不存在!");
            }
            else
            {
                DateTime now = DateTime.Now;
                moverecord.RemoveTime = now;
                mrd.addmove(moverecord);
            }
            //提交采购单后清空
            dt.Clear();
            dataGridDetail.ItemsSource = dt.DefaultView;
        }
コード例 #27
0
ファイル: Towers.cs プロジェクト: hahsieh/HanoiTower
    public MoveRecord Move(int from, int to)
    {
        MoveRecord theRecord;
        int        theDisc;

        if (from < 1 || from > 3)
        {
            throw new InvalidMoveException("Invalid tower value. Valid values for 'From': '1', '2', '3', or 'x' ");
        }
        if (to < 1 || to > 3)
        {
            throw new InvalidMoveException("Invalid tower value. Valid values for 'To': '1', '2', '3', or enter");
        }
        if (from == to)
        {
            throw new InvalidMoveException("Move cancelled.");
        }
        if (threePoles[from - 1].Count == 0)
        {
            throw new InvalidMoveException($"Tower {from} is empty.");
        }
        if (threePoles[to - 1].Count != 0 && threePoles[from - 1].Peek() > threePoles[to - 1].Peek())
        {
            throw new InvalidMoveException($"Top disc of tower {from} is larger than top disc on tower {to}");
        }
        else
        {
            theDisc = threePoles[from - 1].Pop();
            threePoles[to - 1].Push(theDisc);
            NumberOfMoves++;
            theRecord = new MoveRecord(NumberOfMoves, theDisc, from, to, new Towers(this));
            if (threePoles[0].Count == 0 && threePoles[1].Count == 0)
            {
                IsComplete = true;
            }
        }
        return(theRecord);
    }
コード例 #28
0
 private async void LinkMoved(MoveRecord moveRecord) => await repoService.LinkMoved(Data, moveRecord);
コード例 #29
0
        //负责添加一条记录,初始化记录的移出时间,移出仓库,移出员工(只要id)就行,然后添加,移出商品以及总数,
        bool IMoveRecordDao.addmove(MoveRecord moveRecord)
        {
            bool flag = true;

            if (con.State == ConnectionState.Closed)
            {
                con.Open();
            }
            // OracleTransaction transaction = con.BeginTransaction();
            try
            {
                //      string max = "select max(moveid) from move";
                //    OracleCommand cmd = new OracleCommand(max, con);
                //   string next = cmd.ExecuteScalar().ToString();
                //   int moveid = 0;
                //  if (next == "") moveid = 1;
                //  else moveid = int.Parse(next)+1;
                string        sql = "insert into Move values(null,:numbers,:time,:warehouseid,:employeeid)";
                OracleCommand cmd = new OracleCommand(sql, con);
                //        cmd.Parameters.Add(":moveid", OracleDbType.Int32);
                cmd.Parameters.Add(":numbers", OracleDbType.Int32);
                cmd.Parameters.Add(":time", OracleDbType.TimeStamp);
                cmd.Parameters.Add(":warehouseid", OracleDbType.Int32);
                cmd.Parameters.Add(":employeeid", OracleDbType.Int32);
                //      cmd.Parameters[0].Value = moveRecord.RemoveID;
                cmd.Parameters[0].Value = moveRecord.RemoveTotal;
                cmd.Parameters[1].Value = moveRecord.RemoveTime;
                cmd.Parameters[2].Value = moveRecord.WareHouse.WareHouseID;
                cmd.Parameters[3].Value = moveRecord.Employee.EmployeeID;
                cmd.ExecuteNonQuery();
                string max = "select max(moveid) from move";
                cmd = new OracleCommand(max, con);
                string next   = cmd.ExecuteScalar().ToString();
                int    moveid = 0;
                if (next == "")
                {
                    moveid = 1;
                }
                else
                {
                    moveid = int.Parse(next);
                }
                Dictionary <Good, int> temp = moveRecord.Good_Remove;
                foreach (Good good in temp.Keys)
                {
                    int    goodid = good.GoodID;
                    int    amount = temp[good];
                    string insert = "insert into move_good values(:goodid,:moveid,:amount)";
                    cmd = new OracleCommand(insert, con);
                    cmd.Parameters.Add(":goodid", OracleDbType.Int32);
                    cmd.Parameters.Add(":moveid", OracleDbType.Int32);
                    cmd.Parameters.Add(":amount", OracleDbType.Int32);
                    cmd.Parameters[0].Value = goodid;
                    cmd.Parameters[1].Value = moveid;
                    cmd.Parameters[2].Value = amount;
                    cmd.ExecuteNonQuery();
                    OracleCommand cmd1 = new OracleCommand();
                    cmd1.Connection = con;
                    //存储过程
                    cmd1.CommandType = CommandType.StoredProcedure;
                    cmd1.CommandText = "MYSUPERMAKET.MOVE_GOOD_FROM_WAREHOUSE";
                    cmd1.Parameters.Add("good_id", OracleDbType.Int32);
                    cmd1.Parameters.Add("warehouseid", OracleDbType.Int32);
                    cmd1.Parameters.Add("quantity", OracleDbType.Int32);
                    cmd1.Parameters[0].Direction = ParameterDirection.Input;
                    cmd1.Parameters[1].Direction = ParameterDirection.Input;
                    cmd1.Parameters[2].Direction = ParameterDirection.Input;
                    cmd1.Parameters[0].Value     = goodid;
                    cmd1.Parameters[1].Value     = moveRecord.WareHouse.WareHouseID;
                    cmd1.Parameters[2].Value     = amount;
                    cmd1.ExecuteNonQuery();
                }
                //    transaction.Commit();
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
                //   transaction.Rollback();
                flag = false;
            }
            return(flag);
        }
コード例 #30
0
ファイル: GameState.cs プロジェクト: GabeGallagher/TicTacToe
 public Node(MoveRecord move)
 {
     m = move;
 }