Esempio n. 1
0
        //rectangle을 생성한다. 초기에 호출될 함수.
        //w와 h는 원래의 bitmapimage의 width, height
        public Board(Brush img, Brush bodyimg, double w, double h, int xpos, int ypos, ILwin.ShowScreen showscreen, Datas datas)
        {
            Random rnd = new Random();

            this.img = img;
            this.bodyimg = bodyimg;
            this.screen = showscreen;
            this.datas = datas;
        

            //생성
            imgrec = new Grid();
            imgrec.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
            imgrec.VerticalAlignment = System.Windows.VerticalAlignment.Top;
            imgrec.Width = w; imgrec.Height = h;
            imgrec.Background = this.img;
            imgrec.Margin = new Thickness(xpos, ypos, 0, 0);
            screen.sp.Children.Add(imgrec);

            //마우스 핸들러 연결
            //imgrec.MouseLeftButtonUp += new System.Windows.Input.MouseButtonEventHandler(board_up);
            


            makeText();

            System.Diagnostics.Debug.WriteLine("board 완성");
        }
        public MallWindow(Brush bodyimg, Brush OKB, Brush OKBClicked, Datas datas)
        {
            InitializeComponent();

            originalMargin = new Thickness(110, 145, 0, 0);
            duringMargin = new Thickness(140, 145, 0, 0);
            isSearching = false;

            this.Title = "찾는 물건 시세가?";
            this.bodyimg = bodyimg;
            this.Background = bodyimg;
            this.datas = datas;

            this.searchbutton.Background = Brushes.Transparent;
            this.searchbutton.Cursor = Cursors.Hand;

            this.OKB = OKB;
            this.OKBClicked = OKBClicked;
            this.okbut.Background = this.OKB;

            //처음엔 입력을 기다린다.
            readyForInput();

            updateItems();
        }
        //첫 실행될 때, 가장 가져오기 편한 Ram 정보를 가져온다. 이건 아버지에게 여쭤보면 된다.
        public static void initialRAMdata(Datas datas)
        {
            PerformanceCounter ram = new PerformanceCounter("Memory", "Available MBytes");
            string usableRAMStr = ram.NextValue().ToString() + " MB";

            datas.setRAMDatas(usableRAMStr);
        }
        public HelpWindow(Brush bodyimg, Brush OKB, Brush OKBClicked, Datas datas)
        {
            InitializeComponent();

            this.OKB = OKB;
            this.OKBClicked = OKBClicked;
            this.okbut.Background = OKB;

            this.Title = "도움말";
            this.datas = datas;
            this.bodyimg = bodyimg;
            this.mainGrid.Background = bodyimg;
        }
        public AboutWindow(Brush contentImg, Brush OKB, Brush OKBClicked, Datas datas)
        {
            InitializeComponent();

            //this.okbutton.Background = OKB;
            this.Background = contentImg;

            this.datas = datas;

            this.OKB = OKB;
            this.OKBClicked = OKBClicked;
            this.okbut.Background = OKB;

           // testfile();
        }
Esempio n. 6
0
        public Sign(int xPos, int yPos, ShowScreen showscreen, Datas datas)
        {
            this.datas = datas;
            this.screen = showscreen;

            //생성
            imgrec = new Grid();
            imgrec.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
            imgrec.VerticalAlignment = System.Windows.VerticalAlignment.Top;
            imgrec.Width = 95; imgrec.Height = 202;
            imgrec.Margin = new Thickness(xPos, yPos, 0, 0);
            screen.sp.Children.Add(imgrec);

            changeSign();
        }
        //이건 나중에 CPU 온도나 사용량을 가져오는 데 쓰인다. 이건 남용이에게 물어보는 것도 가능하다.
        public static void getCPUdata(Datas datas)
        {
            //현재 CPU 정보를 계산하는 중이었다면 끝낸다.,
            if(datas.computingCPU)
                return;

            //이제 계산을 시작
            datas.computingCPU = true;

            //http://www.dreamincode.net/forums/topic/278594-finding-temperature-of-cpu/ 참조
            //OpenHardWareMonitor API를 사용하여 CPU 정보를 가져오도록 하였다.

            //필요한 정보들을 가져온다.
            PerformanceCounter cpu = new PerformanceCounter("Processor", "% Processor Time", "_Total");
            PerformanceCounter process_cpu = new PerformanceCounter("Process", "% Processor Time", Process.GetCurrentProcess().ProcessName);
           

            float cpuUsage = 0;
            float myProcessCPU = 0;

            //PerformanceCounter가 0을 반환할 수도 있으니 루프를 돌린다.
            while(true)
            {
                cpuUsage = cpu.NextValue();
                if (cpuUsage != 0) break;

                Thread.Sleep(1000);
            }

            //PerformanceCounter가 0을 반환할 수도 있으니 루프를 돌린다.
            while (true)
            {
                myProcessCPU = process_cpu.NextValue();
                if (myProcessCPU != 0) break;

                Thread.Sleep(1000);
            }

            

            //정보를 string으로 변환
            string CPUUsageStr = cpuUsage.ToString() + "%";
            string myProcessCPUStr = myProcessCPU.ToString() + "%";

            //datas에 저장
            datas.setCPUDatas(CPUUsageStr, myProcessCPUStr);

        }
        public MainWindow(ILwin.paraPackage packs)
        {
            InitializeComponent();

            //init에서 만든 정보들을 모두 받아온다.
            this.packs = packs;
            datas = packs.datas;
            iconBr = packs.iconBr;
            miniBr = packs.miniBr;
            xBr = packs.xBr;
            req_recBr = packs.req_recBr;
            button1Br = packs.button1Br;
            button2Br = packs.button2Br;
            requestSndBr = packs.requestSndBr;
            requestSndBrClicked = packs.requestSndBrClicked;
            resp_recBr = packs.resp_recBr;
            aboutcontentBr = packs.aboutcontentBr;
            okButtonBr = packs.okButtonBr;
            marinBarBr = packs.marinBarBr;
            contentBr = packs.contentBr;
            bottomBr = packs.bottomBr;
            boxBr = packs.boxBr;

            //텍스트박스는 response에 위치한 그곳이다.
            textbox = new ILtextBox();


            //메인 윈도우 바를 만들기 위해 호출.
            createBar();

            //윈도우와 버튼들을 만들기 위해 호출.
            createLayout();

            //윈도우를 만든다.
            screen = new ShowScreen(showScreenGrid, SCREEN_RECT, this, packs);

            //텍스트박스는 response에 위치한 그곳이다.
            textbox.addShowScreenReference(screen);

            this.requestMachine.Focus();

            isRefreshing = false;

            
        }
        //Datas의 날씨 정보들을 업데이트한다.
        static public void getWeatherFromHTML(Datas datas)
        {
            //HTML agility pack을 사용.
            HtmlWeb hw = new HtmlWeb();
            string urladdr = "https://www.google.co.kr/search?newwindow=1&hl=ko&site=webhp&q=%EB%82%A0%EC%94%A8";

            HtmlDocument doc = hw.Load(urladdr);
            HtmlNode entire = doc.DocumentNode;

            //div 중, id = ires인 걸 찾아낸다.
            // ex) //가 붙으면 doc 전체에서 찾는다. 즉, HtmlNode는 일종의 포인터일 뿐인 듯하다
            HtmlNode ires_node = doc.DocumentNode.SelectSingleNode("//div[@id='ires']");
            // ex) ./이라면, 위 div(id = 'ires')의 자식들(한 단계 아래) 중에서만 찾는다.
            // ex) .//이라면, 위 div(id = 'ires')의 자식들(몽땅) 중에서만 찾는다.
            //selectsinglenode이니 첫 table만을 가져올 것이다. 이제 table을 얻은 셈이다.
            HtmlNode ires_first_table = ires_node.SelectSingleNode(".//table");
            HtmlNode ires_first_tr = ires_first_table.SelectSingleNode(".//tr");

            //ires_first_tr에 의미 있는 정보들이 들어있다.
            //특히, IMG에 들어있는 것을 이용해 그의 attribute에만 접근해도 정보 앵간히 찾는다.
            HtmlNode ires_first_img = ires_first_tr.SelectSingleNode(".//img");
            HtmlNode ires_first_span = ires_first_tr.SelectSingleNode(".//span");

            //img의 title에는 현재의 날씨가 들어있다.
            //span의 text에는 현재의 기온이 들어있다.

            HtmlNode loc_b = ires_node.SelectSingleNode(".//b");
            
            string todayVal = ires_first_img.Attributes["title"].Value;
            string todayTem = ires_first_span.InnerText;
            string currentLoc = loc_b.InnerText;

            datas.setPresentWeathers(todayTem, todayVal);
            datas.setLocation(currentLoc);
          


        }
        public BoardWindow(Brush bodyimg, Brush OKB, Brush OKBClicked, Datas datas)
        {
            InitializeComponent();

            this.datas = datas;

            this.Title = "게시판";
            this.bodyimg = bodyimg;
            this.Background = bodyimg;

            this.texts.IsReadOnly = true;
            var brush = new SolidColorBrush(Color.FromArgb(255, (byte)216, (byte)255, (byte)250));
            this.texts.Background = brush;
            this.texts.FontSize = 15;
            this.texts.Text = "Crawling articles.....";

            this.OKB = OKB;
            this.OKBClicked = OKBClicked;
            this.okbut.Background = OKB;

            //처음에 기사를 일단 가져온다
            updateArticle();
        }
Esempio n. 11
0
        public void handleRequest(TextBox msgbox, string cmdreq, Datas datas)
        {
            //텍스트박스 라인에 추가한다.
            textboxlines.Add(cmdreq);
            lines++;
            currentLine = lines;

            //공백 기준으로 나누어보자.
            string[] ssize = cmdreq.Split(new char[0]);
            int len = ssize.Length;

            //아무것도 없다.
            if (ssize[0].Equals("")) return;

            //hello를 입력받음
            else if(ssize[0].Equals("hello"))
            {
                //그냥 hello는 둘 다에게 인사
                if (len == 1)
                {
                    showscreen.getNamyong().sayHello();
                    showscreen.getDaddy().sayHello();
                }

                 //hello n은 남용이에게 인사
                else if(len == 2 && ssize[1].Equals("n"))
                    showscreen.getNamyong().sayHello();

                 //hello d는 아버지에게 인사
                else if (len == 2 && ssize[1].Equals("d"))
                    showscreen.getDaddy().sayHello();

            }

            //time를 입력받음
            else if (ssize[0].Equals("time"))
            {
                //그냥 time는 둘 다에게 묻기
                if (len == 1)
                {
                    showscreen.getNamyong().sayTime();
                    showscreen.getDaddy().sayTime();
                }

                 //time n은 남용이에게 묻기
                else if (len == 2 && ssize[1].Equals("n"))
                    showscreen.getNamyong().sayTime();

                 //time d는 아버지에게 묻기
                else if (len == 2 && ssize[1].Equals("d"))
                    showscreen.getDaddy().sayTime();

            }

            //jump를 입력받음
            else if (ssize[0].Equals("jump"))
            {
                //그냥 jump는 둘 다 점프
                if (len == 1)
                {
                    showscreen.getNamyong().startjump();
                    showscreen.getDaddy().startjump();
                }

                 //jump n은 남용이 점프
                else if (len == 2 && ssize[1].Equals("n"))
                    showscreen.getNamyong().startjump();

                 //jump d는 아버지 점프
                else if (len == 2 && ssize[1].Equals("d"))
                    showscreen.getDaddy().startjump();

            }

            //speed를 입력받음
            else if (ssize[0].Equals("speed"))
            {
                //그냥 speed [n]는 둘 다의 속도 변경
                if (len == 2)
                {
                    //speed [숫자] 일 경우. 이젠 단어만 추출하면 된다.
                    int num;

                    //숫자가 들어있는지 확인하며, 맞다면 num에 집어넣고 그 레벨만큼으로 둘의 속도를 설정
                    if (int.TryParse(ssize[1], out num))
                    {
                        showscreen.getNamyong().sayQuick(num);
                        showscreen.getDaddy().sayQuick(num);
                    }
                }

                 //speed n은 남용이 속도 변경
                else if (len == 3 && ssize[1].Equals("n"))
                {
                    //speed [숫자] 일 경우. 이젠 단어만 추출하면 된다.
                    int num;

                    //숫자가 들어있는지 확인하며, 맞다면 num에 집어넣고 그 레벨만큼으로 둘의 속도를 설정
                    if (int.TryParse(ssize[2], out num))
                        showscreen.getNamyong().sayQuick(num);
                }

                 //speed d는 아버지 속도 변경
                else if (len == 3 && ssize[1].Equals("d"))
                {
                    //speed [숫자] 일 경우. 이젠 단어만 추출하면 된다.
                    int num;

                    //숫자가 들어있는지 확인하며, 맞다면 num에 집어넣고 그 레벨만큼으로 둘의 속도를 설정
                    if (int.TryParse(ssize[2], out num))
                        showscreen.getDaddy().sayQuick(num);
                }


            }

            //box를 처음에 입력받음
            else if (ssize[0].Equals("box"))
            {
                //box [숫자] 일 경우. 이젠 단어만 추출하면 된다.
                int num;

                //숫자가 들어있는지 확인하며, 맞다면 num에 집어넣고 webimage 떨구기를 시행한다
                if (int.TryParse(ssize[1], out num) == true)
                {
                    //공백으로 split 하였지만, box [aaa bbb ccc]는 가능하도록, 그 다음부턴 공백도 단어로 인정해야 한다
                    string queryImage = "";
                    for (int i = 2; i < ssize.Length; i++)
                    {
                        queryImage += ssize[i];

                        //끝이 아니라면 공백 문자를 그대로 사용
                        if (i != ssize.Length) queryImage += " ";

                    }

                    //스레드로 돌린다.
                    showscreen.generateWebImage(queryImage, num);


                    cmdreq = "박스에게 [" + queryImage + "] 이미지 " + num + "개 를 요청함!";

                }
            }

            //talk를 처음에 입력받음
            else if(ssize[0].Equals("talk"))
            {
                //그냥 talk는 둘 다에게 말걸기
                if (len == 1)
                {
                    showscreen.getNamyong().sayKeyword(showscreen.getNamyong().balloon);
                    showscreen.getDaddy().sayKeyword( showscreen.getDaddy().balloon);
                }

                 //talk n은 남용이에게 말걸기
                else if (len == 2 && ssize[1].Equals("n"))
                    showscreen.getNamyong().sayKeyword(showscreen.getNamyong().balloon);
                    

                 //time d는 아버지에게 말걸기
                else if (len == 2 && ssize[1].Equals("d"))
                    showscreen.getDaddy().sayKeyword(showscreen.getDaddy().balloon);

            }

            //introduce를 처음에 입력받음
            else if (ssize[0].Equals("introduce"))
            {
                //그냥 introduce는 둘 다에게 말걸기
                if (len == 1)
                {
                    showscreen.getNamyong().introduce();
                    showscreen.getDaddy().introduce();
                }

                 //introduce n은 남용이에게 말걸기
                else if (len == 2 && ssize[1].Equals("n"))
                    showscreen.getNamyong().introduce();


                 //introduce d는 아버지에게 말걸기
                else if (len == 2 && ssize[1].Equals("d"))
                    showscreen.getDaddy().introduce();

            }

            //computer를 처음에 입력받음
            else if (ssize[0].Equals("computer"))
            {
                //그냥 computer는 둘 다에게 말걸기
                if (len == 1)
                {
                    showscreen.getNamyong().sayaboutCom();
                    showscreen.getDaddy().sayaboutCom();
                }

                 //computer n은 남용이에게 말걸기
                else if (len == 2 && ssize[1].Equals("n"))
                    showscreen.getNamyong().sayaboutCom();


                 //computer d는 아버지에게 말걸기
                else if (len == 2 && ssize[1].Equals("d"))
                    showscreen.getDaddy().sayaboutCom();

            }

            //board 입력
            else if(ssize[0].Equals("board") && len == 1)
            {
                showscreen.getBoard().openBoardWindow();
            }

            //product 입력
            else if (ssize[0].Equals("product") && len == 1)
            {
                showscreen.getMall().openMallWindow();
            }

            //help 입력
            else if(ssize[0].Equals("help") && len == 1)
            {
                showscreen.getMWinReference().OpenHelpWindow();
            }

            //about 입력
            else if (ssize[0].Equals("about") && len == 1)
            {
                showscreen.getMWinReference().openAboutWIndow();
            }

            //exit 입력
            else if (ssize[0].Equals("exit") && len == 1)
            {
                showscreen.getMWinReference().exitNamyongNDaddy();
            }

            //reload 입력
            else if (ssize[0].Equals("reload") && len == 1)
            {
                showscreen.getMWinReference().reloadScreen();
            }

            
            

            msgbox.ScrollToEnd();
        }
Esempio n. 12
0
        //webImage를 생성한다. 하나의 query에 대해 주어진 개수만큼 이미지를 가져올 것이다.
        public static void generateWebImageThread(Datas datas, flyingBox flyingbox, string query, int start, int num, ILwin.ShowScreen showscreen)
        {

            List<string> urls = new List<string>();

            //string 리스트에 url을 필요한 개수만큼 받아온다.
            HTMLhandler.getImages(urls, num, query);

            //*************위 urlgetThread가 모두 끝날 때까지 기다린다. 그리고 나서 webitems를 추가하라.

            //박스 이미지를 변경. 열린 박스로 만든다
            flyingBox.changeImg(flyingbox, showscreen.getMWinReference(), true);

            for(int i = 0; i < num; i++)
            {
                //현재 플라잉 박스의 위치
                int flyingbox_x = 0;
                int flyingbox_y = 0;

                //마지막 web item인지를 확인
                bool isFinal = false;
                if (i == (num - 1)) isFinal = true;


                showscreen.getMWinReference().Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate
                {
                    flyingbox_x = (int)flyingbox.boximg.Margin.Left;
                    flyingbox_y = (int)flyingbox.boximg.Margin.Top;
                }));

                //가져온 string 리스트의 url을 하나하나 넣어 webItem를 생성한다.
                WebItem.addDatas(showscreen, datas.webItems.ElementAt(start + i), urls[i], flyingbox_x, flyingbox_y);
                WebItem.fallingItem(showscreen, datas.webItems.ElementAt(start + i), isFinal);
            }
        }