예제 #1
0
        static void Main(string[] args)
        {
            int mode = GetMode(args);
            if (mode == -1)
            {
                Usage(args);
            }
            else
            {
                ControlType control = new ControlType();
                control.valet = 1; // VALET_SCORING_IAF;
                control.leadFlag = true;
                control.datumHardRounding = false;

                int errorCode;
                char[] line = new char[160];
                if ((errorCode = VlibImport.ValetSetControl(ref control)) != RETURN_NO_FAULT)
                {
                    VlibImport.ValetErrorMessage(errorCode, line);
                    Console.WriteLine(line);
                } else
                {
                    VlibImport.ValetClear();
                    VlibImport.ValetSetBoardNumber(1);
                    if (mode == 0)
                    {
                        for (int i = 0; i < TEST_ENTRIES; i++)
                        {
                            char[] inputline = (example[i] + "\0").ToCharArray();
                            if ((errorCode = VlibImport.ValetAddByLine(inputline)) != RETURN_NO_FAULT)
                            {
                                VlibImport.ValetErrorMessage(errorCode, line);
                                Console.WriteLine(example[i]);
                                Console.WriteLine(line);
                            }
                        }
                    }
                    else if (mode == 1)
                    {
                        PlayersTagType players = new PlayersTagType();
                        InputResultType input = new InputResultType();

                        for (uint i = 0; i < TEST_ENTRIES; i++)
                        {
                            SetTagInputs(ref players, ref input, i);

                            if ((errorCode = VlibImport.ValetAddByTag( ref players, ref input)) != RETURN_NO_FAULT)
                            {
                                VlibImport.ValetErrorMessage(errorCode, line);
                                Console.WriteLine(line);
                            }
                        }
                    }
                    else
                    {
                        PlayersNumberType players = new PlayersNumberType();
                        InputResultType input = new InputResultType();

                        for (uint i = 0; i < TEST_ENTRIES; i++)
                        {
                            SetNumberInputs(ref players, ref input, i);

                            if ((errorCode = VlibImport.ValetAddByNumber(ref players, ref input)) != RETURN_NO_FAULT)
                            {
                                VlibImport.ValetErrorMessage(errorCode, line);
                                Console.WriteLine(line);
                            }
                        }
                    }

                    VlibImport.ValetCalculate();

                    if (mode == 0 || mode == 1)
                    {
                        PositionsTagType players = new PositionsTagType();
                        OutputResultType output = new OutputResultType();

                        while (VlibImport.ValetGetNextScoreByTag(ref players, ref output))
                        {
                            if (!output.declFlag1 && !output.declFlag2)
                                PrintPassedResultByTag(players, output);
                            else
                                PrintPlayedResultByTag(players, output);
                            Console.WriteLine();
                        }
                    }
                    else
                    {
                        PositionsNumberType players = new PositionsNumberType();
                        OutputResultType output = new OutputResultType();

                        while (VlibImport.ValetGetNextScoreByNumber(ref players, ref output))
                        {
                            if (players.decl1 == 0 ||
                                players.decl2 == 0 ||
                                players.def1 == 0 ||
                                players.def1 == 0)
                            {
                                Console.WriteLine("A player tag was not numerical");
                            } else
                            {
                                if (!output.declFlag1 && !output.declFlag2)
                                    PrintPassedResultByNumber(players, output);
                                else
                                    PrintPlayedResultByNumber(players, output);
                            }

                            Console.WriteLine();
                        }
                    }

                }

            }
            Console.WriteLine("Press any key to exit");
            Console.ReadKey();
        }
예제 #2
0
 public static extern int ValetAddByNumber(ref PlayersNumberType players, ref InputResultType input);
예제 #3
0
        static void SetNumberInputs(ref PlayersNumberType players, ref InputResultType input, uint i)
        {
            players.north = northNoList[i];
            players.east = eastNoList[i];
            players.south = southNoList[i];
            players.west = westNoList[i];

            SetContractInputs(ref input, i);
        }