Beispiel #1
0
        void InitGame(int mode, bool ispvp = false)
        {
            Init(mode, _renderer);

            if (ispvp == false)
            {
                if (mode == 1)
                {
                    User.Color = eTeam.White;
                }
                else
                {
                    User.Color = eTeam.Black;
                }
            }

            if (User.Color == eTeam.Black)
            {
                _renderer.UpdateTurnBackground(eTeam.Black);

                if (ispvp == true)
                {
                    NetProcess.SendPassThroughMessage(x - 1, y - 1, User.Color);
                }
            }
            else
            {
                _renderer.UpdateTurnBackground(eTeam.White);
            }
        }
Beispiel #2
0
        int CheckKey(int mode, bool isSend = false)
        {
            if (isComputer)
            {
                var ret = pOmok[curStone].placement(x, y, curStone);
                pOmok[curStone].getXY(ref x, ref y);

                if (ret != 11 && isSend == false)  //삼삼   //내부 체크는 1,1부터 시작 하나 그래픽 ui는 0,0부터 시작
                {
                    _renderer.UpdateStone(x, y, curStone == 0 ? eTeam.Black : eTeam.White);
                }

                if (isSend == true) //네트워크는 기본 0,0 기준이라 변환해준다.
                {
                    NetProcess.SendPassThroughMessage(x - 1, y - 1, User.Color);
                }

                return(ret);
            }
            else if (aix != -1 && aiy != -1)
            {
                if (isSend == false)
                {
                    //내부 좌표는 1,1 시작 ui이는 0,0 시작이라 변환
                    x = aix + 1;
                    y = aiy + 1;
                }
                else
                {
                    x = aix + 1;
                    y = aiy + 1;
                }

                aix = aiy = -1;

                var ret = pOmok[curStone].placement(x, y, curStone);
                if (ret != 11 && ret != 10 && isSend == false) //삼삼 11 이미 놓여졌음 10
                {
                    _renderer.UpdateStone(x, y, curStone == 0 ? eTeam.Black : eTeam.White, true);
                }

                if (isSend == true) //네트워크는 기본 0,0 기준이라 변환해준다.
                {
                    NetProcess.SendPassThroughMessage(x - 1, y - 1, User.Color == eTeam.White ? eTeam.Black : eTeam.White);
                }

                else
                {
                }

                return(ret);
            }
            else
            {
                return(0);
            }
        }
Beispiel #3
0
        void OnPutStone(object sender, System.EventArgs e)
        {
            if (User.IsMyTurn == false)
            {
                return;
            }

            if (board.ContainsKey(_renderer.aimy) == false)
            {
                board[_renderer.aimy] = new Dictionary <int, int>();
            }

            if (board[_renderer.aimy].ContainsKey(_renderer.aimx) == false)
            {
                board[_renderer.aimy][_renderer.aimx] = 0;
            }
            else if (board[_renderer.aimy][_renderer.aimx] != 0)
            {
                return;
            }

            if (User.Color == eTeam.Black)
            {
                //내부 좌표는 1,1 시작 ui이는 0,0 시작이라 변환
                int x = _renderer.aimx + 1;
                int y = _renderer.aimy + 1;

                var ret = renjuRuleChecker.placement(x, y, 0);
                if (ret == 11 || ret == 10) //삼삼 11 이미 놓여졌음 10
                {
                    DependencyService.Get <Toast>().Show("착수금지 구역입니다.");
                    return;
                }
            }

            NetProcess.SendPassThroughMessage(_renderer.aimx, _renderer.aimy, User.Color);
        }
Beispiel #4
0
        public Room()
        {
            InitializeComponent();

            if (User.IsEnableScreenChat == true)
            {
                Chatting.IsEnabled = true;
            }

            InitTimer();

            _ai._renderer = _renderer;

            renjuRuleChecker.initBoard();

            InitBoardGrid();

            if (User.Auto == true)
            {
                User.myInfo.ai_reset_flag = true;

                if (User.Color == eTeam.Black)
                {
                    Thread.Sleep(1000);
                }
            }

            Button PrevBtn = new Button {
                Text = "◁", HorizontalOptions = LayoutOptions.Start
            };

            PrevBtn.Clicked += (sender, e) => {
                Navigation.PopModalAsync();
            };

            ProgressRoom.Progress = 0.0f;

            timeLabel.IsEnabled = true;
            timeLabel.Text      = "00";

            rewardVideo = DependencyService.Get <iAd_RewardVideoView>();

            Device.StartTimer(TimeSpan.FromSeconds(1), () =>
            {
                try
                {
                    if (User.IsMyTurn == true)
                    {
                        var current           = ((DateTime.Now - User.MytrunStartTime).TotalSeconds * 0.033);
                        ProgressRoom.Progress = current;

                        int remainseconds = 30 - (int)((DateTime.Now - User.MytrunStartTime).TotalSeconds);
                        if (remainseconds < 0)
                        {
                            remainseconds = 0;
                        }

                        Device.BeginInvokeOnMainThread(() =>
                        {
                            timeLabel.Text = remainseconds.ToString();
                        });

                        //   DependencyService.Get<Toast>().Show(timeLabel.Text);

                        //   ToastNotification.TostMessage(timeLabel.Text);

                        if ((DateTime.Now - User.MytrunStartTime).TotalSeconds > 30)
                        {
                            if (User.Auto == true)
                            {
                                NetProcess.SendLeaveRoom(0);
                            }
                            else
                            {
                                NetProcess.SendPassThroughMessage(-1, -1, User.Color);
                            }
                        }
                    }

                    if (debug > 90)
                    {
                        NetProcess.SendLeaveRoom(0);
                    }


                    ///////////////////////////////////////////////////////////////////
                    if (User.myInfo.ai_reset_flag == true)
                    {
                        //흑ai
                        if (User.Color == eTeam.Black)
                        {
                            User.myInfo.ai_rule = 3;
                            User.myInfo.ai_mode = 1;
                        }
                        else //백ai
                        {
                            User.myInfo.ai_rule = 3;
                            User.myInfo.ai_mode = 2;
                        }

                        Device.BeginInvokeOnMainThread(() =>
                        {
                            _ai.PlayGame(User.myInfo.ai_rule, User.myInfo.ai_mode, true);
                            isPlaying = true;
                            User.myInfo.ai_reset_flag = false;

                            UpdateBattleInfo();
                        });
                    }

                    if (isPlaying == true)
                    {
                        Device.BeginInvokeOnMainThread(() =>
                        {
                            isPlaying = _ai.PlaygameLoop(this, User.myInfo.ai_mode, true);
                        });

                        if (isPlaying == false) //종료
                        {
                            isPlaying = false;
                        }
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.ToString());
                }


                return(!isExit);
            });


            MessagingCenter.Subscribe <Room>(this, "close", (sender) =>
            {
                NetProcess.SendLeaveRoom(0);
            });

            //언어 수동 변환
            if (User.Locale != "ko")
            {
                LeaveRoom.Text = "Exit";

                LeftButton.Text  = "Left";
                UPButton.Text    = "Up";
                Clicked.Text     = "Stone";
                DownButton.Text  = "Down";
                RightButton.Text = "Right";

                black.Text = "Black";
                white.Text = "White";
            }
        }