//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(); }
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(); }
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(); }
//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); } }