Пример #1
0
        /// <summary>
        ///     おじゃまを相手のフィールドに送る
        /// </summary>
        /// <param name="ojamas">送るおじゃまの量と種類</param>
        private void ThrowOjama(OjamaCalculator ojamas)
        {
            var n = ojamas.Calculate();

            for (var i = 0; i < n; ++i)
            {
                var ojama = new OjamaBall(SpriteBatch, Camera, GameMain, this)
                {
                    IsHard = ojamas.IsHard(),
                    Size   = BallSize
                };
                OtherField.EnqueueOjama(ojama);
            }
        }
Пример #2
0
        public Word Clone()
        {
            var clone = new Word
            {
                Id            = (string)Id.Clone(),
                Guid          = Guid,
                Vernacular    = (string)Vernacular.Clone(),
                Plural        = (string)Plural.Clone(),
                Created       = (string)Created.Clone(),
                Modified      = (string)Modified.Clone(),
                PartOfSpeech  = (string)PartOfSpeech.Clone(),
                OtherField    = (string)OtherField.Clone(),
                ProjectId     = (string)ProjectId.Clone(),
                Accessibility = Accessibility,
                Audio         = new List <string>(),
                EditedBy      = new List <string>(),
                History       = new List <string>(),
                Senses        = new List <Sense>(),
                Note          = Note.Clone()
            };

            foreach (var file in Audio)
            {
                clone.Audio.Add((string)file.Clone());
            }
            foreach (var id in EditedBy)
            {
                clone.EditedBy.Add((string)id.Clone());
            }
            foreach (var id in History)
            {
                clone.History.Add((string)id.Clone());
            }
            foreach (var sense in Senses)
            {
                clone.Senses.Add(sense.Clone());
            }

            return(clone);
        }
Пример #3
0
        public Word Clone()
        {
            var clone = new Word
            {
                Id           = Id.Clone() as string,
                Vernacular   = Vernacular.Clone() as string,
                Plural       = Plural.Clone() as string,
                Created      = Created.Clone() as string,
                Modified     = Modified.Clone() as string,
                PartOfSpeech = PartOfSpeech.Clone() as string,
                OtherField   = OtherField.Clone() as string,
                ProjectId    = ProjectId.Clone() as string,
                Audio        = new List <string>(),
                EditedBy     = new List <string>(),
                History      = new List <string>(),
                Senses       = new List <Sense>()
            };

            foreach (var file in Audio)
            {
                clone.Audio.Add(file.Clone() as string);
            }
            foreach (var id in EditedBy)
            {
                clone.EditedBy.Add(id.Clone() as string);
            }
            foreach (var id in History)
            {
                clone.History.Add(id.Clone() as string);
            }
            foreach (var sense in Senses)
            {
                clone.Senses.Add(sense.Clone());
            }

            return(clone);
        }
Пример #4
0
        public override void StartTurn()
        {
            IsRunning = true;

            var turnInfo = new StringBuilder();

            turnInfo.Append(CurrentField.GenerateTurnInfoString());
            turnInfo.Append(OtherField.GenerateTurnInfoString());

            var gameLogger = GameMain.GameLogger;
            var stopWatch  = new Stopwatch();

            stopWatch.Start();

            _inputQueue.Enqueue(turnInfo.ToString());

            var task = Task.Factory.StartNew(() => {
                gameLogger.Write("AI入力待ち->");
                int x, y;
                var aiLogger = CurrentField.AiLogger;
                var input    = _playerAi.StandardOutput.ReadLine();
                aiLogger.OutputLogger.WriteLine(input);
                AiOutputs.Add(input ?? "");

                var lines = input?.Split(' ');

                if (_token.IsCancellationRequested)
                {
                    return;
                }

                stopWatch.Stop();
                _totalThinkTime += stopWatch.Elapsed;
                LeftThinkTimes.Add(LeftMilliseconds);

                if (lines == null || lines.Length != 2 ||
                    !int.TryParse(lines[0], out x) ||
                    !int.TryParse(lines[1], out y))
                {
                    stopWatch.Stop();
                    _totalThinkTime += stopWatch.Elapsed;
                    LeftThinkTimes.Add(LeftMilliseconds);
                    OutPut = new Point();
                    Dispose();
                    gameLogger.WriteLine("AIの出力が無効 (" + stopWatch.ElapsedMilliseconds + "ms, left " +
                                         LeftMilliseconds / 1000 + "s)");
                    return;
                }

                if (TotalTimeLimit < _totalThinkTime)
                {
                    OutPut = new Point();
                    gameLogger.WriteLine("合計思考時間の時間制限超過:" + x + " " + y + " (" +
                                         stopWatch.ElapsedMilliseconds + "ms, left " +
                                         LeftMilliseconds / 1000 + "s)");
                    return;
                }
                gameLogger.WriteLine("OK:" + x + " " + y + " (" + stopWatch.ElapsedMilliseconds +
                                     "ms, left " + LeftMilliseconds / 1000 + "s)");
                OutPut = new Point(x, y);
            });

            try {
                if (!task.Wait(10000))
                {
                    gameLogger.WriteLine("1ターンの時間制限超過:" + task.Status);
                    Dispose();
                    return;
                }
            } catch (AggregateException exception)
                when(exception.InnerExceptions.Any(e => e is OperationCanceledException))
                {
                    return;
                }

            gameLogger.WriteLine("ターン終了:" + OutPut + " 入力待ちタスク:" + task.Status);
            IsRunning = false;
        }
Пример #5
0
        private void SetValue_D()
        {
            if (FSelectedBlockFieldItem_D == null)
                return;
            FSelectedBlockFieldItem_D.Description = tbCaption_D.Text;
            FSelectedBlockFieldItem_D.CheckNull = cbCheckNull_D.Text;
            FSelectedBlockFieldItem_D.DefaultValue = tbDefaultValue_D.Text;
            FSelectedBlockFieldItem_D.ControlType = cbControlType_D.Text;
            FSelectedBlockFieldItem_D.ComboRemoteName = tbComboRemoteName_D.Text;
            FSelectedBlockFieldItem_D.ComboEntityName = tbComboEntityName_D.Text;
            FSelectedBlockFieldItem_D.ComboTextField = cbComboDisplayField_D.Text;
            FSelectedBlockFieldItem_D.ComboValueField = cbComboValueField_D.Text;

            if (!String.IsNullOrEmpty(tbComboRemoteName_D.Text) && tbComboRemoteName_D.Text.Contains("."))
            {
                if (radioButtonEntity.Checked)
                {
                    String[] combo_DRemoteNames = tbComboRemoteName_D.Text.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
                    List<COLDEFInfo> colDefObjects = WzdUtils.GetColumnDefination(combo_DRemoteNames[0], combo_DRemoteNames[1], this.tbComboEntityName_D.Text, cbEEPAlias.Text);
                    if (colDefObjects != null)
                    {
                        COLDEFInfo colDefObject = colDefObjects.Find(c => c.FIELD_NAME == cbComboDisplayField_D.Text);
                        if (colDefObject != null)
                            FSelectedBlockFieldItem_D.ComboTextFieldCaption = colDefObject.CAPTION;

                        colDefObject = colDefObjects.Find(c => c.FIELD_NAME == cbComboValueField_D.Text);
                        if (colDefObject != null)
                            FSelectedBlockFieldItem_D.ComboValueFieldCaption = colDefObject.CAPTION;
                    }

                    if (tbOtherFields_D.Text != null)
                    {
                        String[] otherFields = tbOtherFields_D.Text.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
                        FSelectedBlockFieldItem_D.ComboOtherFields = new List<OtherField>();
                        foreach (String item in otherFields)
                        {
                            if (item != FSelectedBlockFieldItem_D.ComboTextField && item != FSelectedBlockFieldItem_D.ComboValueField)
                            {
                                OtherField of = new OtherField();
                                of.FieldName = item;
                                if (colDefObjects != null)
                                {
                                    COLDEFInfo colDefObject = colDefObjects.Find(c => c.FIELD_NAME == item);
                                    if (colDefObject != null)
                                        of.FieldCaption = colDefObject.CAPTION;
                                }
                                FSelectedBlockFieldItem_D.ComboOtherFields.Add(of);
                            }
                        }
                    }

                    SYS_REFVAL aSYS_REFVAL = new SYS_REFVAL();
                    aSYS_REFVAL.REFVAL_NO = "SL." + FSelectedBlockFieldItem_D.ComboEntityName;
                    aSYS_REFVAL.TABLE_NAME = FSelectedBlockFieldItem_D.ComboEntityName;
                    aSYS_REFVAL.SELECT_ALIAS = FSelectedBlockFieldItem_D.ComboRemoteName;
                    aSYS_REFVAL.DISPLAY_MEMBER = FSelectedBlockFieldItem_D.ComboTextField;
                    aSYS_REFVAL.VALUE_MEMBER = FSelectedBlockFieldItem_D.ComboValueField;
                    if (FSelectedBlockFieldItem_D.ComboOtherFields != null)
                    {
                        foreach (OtherField of in FSelectedBlockFieldItem_D.ComboOtherFields)
                        {
                            aSYS_REFVAL.SELECT_COMMAND += of.FieldName + ";";
                        }
                    }
                    List<object> lParams = new List<object>();
                    lParams.Add(aSYS_REFVAL);
                    WzdUtils.SaveDataToTable(lParams, "SYS_REFVAL");
                }
                else if (radioButtonInfoCommand.Checked)
                {
                    DataSet dsCOLDEF = GetDataFromCOLDEF(tbComboEntityName_D.Text);
                    if (dsCOLDEF.Tables.Count > 0 && dsCOLDEF.Tables[0].Rows.Count > 0)
                    {
                        DataRow[] drsDisplay = dsCOLDEF.Tables[0].Select(String.Format("FIELD_NAME='{0}'", cbComboDisplayField_D.Text));
                        if (drsDisplay.Count() > 0)
                            FSelectedBlockFieldItem_D.ComboTextFieldCaption = drsDisplay[0]["CAPTION"].ToString();

                        DataRow[] drsValue = dsCOLDEF.Tables[0].Select(String.Format("FIELD_NAME='{0}'", cbComboDisplayField_D.Text));
                        if (drsValue != null)
                            FSelectedBlockFieldItem_D.ComboValueFieldCaption = drsValue[0]["CAPTION"].ToString();
                    }

                    if (tbOtherFields_D.Text != null)
                    {
                        String[] otherFields = tbOtherFields_D.Text.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
                        FSelectedBlockFieldItem_D.ComboOtherFields = new List<OtherField>();
                        foreach (String item in otherFields)
                        {
                            if (item != FSelectedBlockFieldItem_D.ComboTextField && item != FSelectedBlockFieldItem_D.ComboValueField)
                            {
                                OtherField of = new OtherField();
                                of.FieldName = item;
                                if (dsCOLDEF.Tables.Count > 0 && dsCOLDEF.Tables[0].Rows.Count > 0)
                                {
                                    DataRow[] drs = dsCOLDEF.Tables[0].Select(String.Format("FIELD_NAME='{0}'", item));
                                    if (drs.Count() > 0)
                                        of.FieldCaption = drs[0]["CAPTION"].ToString();
                                }
                                FSelectedBlockFieldItem_D.ComboOtherFields.Add(of);
                            }
                        }
                    }
                    else
                    {

                    }

                    String selectCommand = String.Empty;
                    if (FSelectedBlockFieldItem_D.ComboOtherFields != null)
                    {
                        foreach (OtherField of in FSelectedBlockFieldItem_D.ComboOtherFields)
                        {
                            selectCommand += of.FieldName + ";";
                        }
                    }
                    SetDataToSYS_REFVAL(FSelectedBlockFieldItem_D.ComboEntityName,
                                        FSelectedBlockFieldItem_D.ComboTextField,
                                        FSelectedBlockFieldItem_D.ComboValueField,
                                        FSelectedBlockFieldItem_D.ComboRemoteName,
                                        selectCommand);
                }
            }

            FSelectedBlockFieldItem_D.QueryMode = cbQueryMode_D.Text;
            FSelectedBlockFieldItem_D.EditMask = tbEditMask_D.Text;

            //FSelectedListViewItem.SubItems[1].Text = FSelectedBlockFieldItem.Description;
            //FSelectedListViewItem.SubItems[2].Text = FSelectedBlockFieldItem.CheckNull;
            //FSelectedListViewItem.SubItems[3].Text = FSelectedBlockFieldItem.DefaultValue;
            //FSelectedListViewItem.SubItems[4].Text = FSelectedBlockFieldItem.RefValNo;
            //FSelectedListViewItem.SubItems[5].Text = FSelectedBlockFieldItem.QueryMode;
            //FSelectedListViewItem.SubItems[6].Text = FSelectedBlockFieldItem.EditMask;
        }