拾荒者的垃圾場。
這兒有點荒蕪,而我繼續在生命中拾荒。

目前日期文章:201605 (2)

瀏覽方式: 標題列表 簡短摘要

想把online judge弄得專業一點,所以資料庫的管理是必要的,我選擇了mysql,因為想要用linux當主機。

先上codecademy,學習學習。有三章左右,我學完第一章基本語法後就開始配環境了,先在cygwin上練習!!

由於學校主機的mysql好像要帳號,沒門道,所以我便想辦法配個環境,沒想到cygwin上就可以啦!!

首先,我得到stack overflow的大神幫助,找到了cygwin安裝的方法。以下是我操作的截圖。
(我的 setup-x86_64.exe在downloads中)

cygstart -- /path/to/setup-x86.exe -K http://cygwinports.org/ports.gpg

(/path/to/setup-x86.exe 看你的安裝檔位置)

增加 User URL : ftp://ftp.cygwinports.org/pub/cygwinports

連上後,跟一般鏡像站的介面一樣,然後搜尋處鍵入mysql(還是sql我忘了),把選項點一下改成install(10.1.18-1)。

(2017/2/9 update: 兩個條目都下,否則  mysql_install_db 會出現 

"FATAL ERROR: Could not find ./bin/my_print_defaults"

而可能更新緣故,原本 mysql  變成了 mariaDB)

接著下一步就可以下載下來囉!
其實我發現從GUI直接開setup,然後選原本列表內的鏡像站,就有sql可以下載了,還是不太清楚上面在幹嘛XP

(好像是port新增,鏡像內容不一樣,可能其他的只有提供 library 吧,
說到port,我就想到我悲慘的freeBSD QQ , 還是Mint(Ubuntu)的apt-get好用 ... )

mysql載下後,要進行一些設定,把server架起來。

就三行 ( 直接在cygwin的TCL下指令 ):
# To begin MySQL setup run the following:
mysql_install_db

# Run mysql - you'll get a firewall alert from windows if you have it active.
mysqld_safe &

# Immediately following that, it would be wise to run the following:
mysql_secure_installation
( 一些密碼設定之類的 )

這樣就算設定完成了。

因為一開始只有root帳號(要其他的帳號要再加,我也還沒研究)
所以下   mysql -u root -p   以  root  身分先登入  server 。

一登入,可以先下 show databases ; 看看有那些databases。

然後用 create database 名稱 ; 指令創造資料庫。

用system 後可接bash shell 指令,我直接cat 寫好的 mysql , 然後貼上 (其實那時我是想直接匯入,但沒試成功)
可以在bash shell 用 cat 指令 : cat  create.sql | mysql -u root -p
抑或在mysql 環境用 source 指令 : source ./create.sql ;

新增第一筆資料!

wow ~ 太感動了,我有自己的第一個mysql資料庫了!!太讚了!
附上凍仁大的mysql指令筆記

nobodyzxc 發表在 痞客邦 留言(0) 人氣()

這個是高中地科老師提過的課題,耳聞同學中有人做出來了,當然,都高中畢業了,已經學了程式,能力足矣,開始實做吧。

對於這個目標,首要就是對項目的留意,除了自己上網查資料,生活中接觸到相關內容也要留心,像幾個月前同學介紹看sitcon的直播,就有查一些幾年前的影片,當中剛好就看到從技術面簡介線上遊戲外掛介紹一些API的調用,就直接去google這些名詞了。

由於升級到win10,原本的M$game都進去xbox裡了,踩地雷也進去了,我覺得用舊版的應該比較好做,新版的花花綠綠的,根本就變成花園了,地雷變瓢蟲...受不了 > <
而且對於畫面的規劃感覺不是很好,還要滾輪滑動螢幕?!

怒載舊版

首先比較麻煩的就是畫面像素分析,但剛好踩地雷數字的顏色都有分開所以只要抓那格的顏色就好了。( 3 7 8的顏色都一樣,所以我是看周圍狀態去變動3 , 7和8)
先把matrix做出來吧!!

我參考了一下這篇自動化連連看,差不多了解流程。
像素怎抓??首先要抓到form的headler(名稱),我是用spy++(VS2010自帶的...剛好有裝 : )


首先要注意的是headler,因為minesweeper程式開下去玩的時侯會生成一個child form,那個headler是抓不到的(因為根本沒有),所以要再借助API抓child form's headler
整句下來會變這樣:

wndPaneParent = FindWindow(NULL , "Minesweeper"); // wndPaneParent 是一種windows API 的資料型態 , 名為 HWND , 宣告方式 : HWND 變數 ;
if(!wndPaneParent) puts("no such wnd !!") , exit(1); // 除錯
wndPane = GetWindow( wndPaneParent , 5); // wndPane亦同
if(!wndPane) puts("no child wnd") , exit(1); //除錯

再配合一下標尺工具FSCapture(真的不錯用 螢幕截圖都靠它了,還可以錄影 >///<
其中與其用標尺,我覺得用 "擷取矩形區域" 去看位置比較快 然後像素顏色用 "螢幕取色器" 很方便 RGB都直接幫你標出來
原本還不熟悉這個工具,不知道有取色器可以用,還抓了整段顏色數值再用API轉RGB,真蠢 www

因為它的顏色是一個range,不是說每格內的某色RGB都一樣,所以我寫成從1/3段開始往後抓,抓到某色range就停下來,確認為某色,這比較麻煩,可能就是要耐心去試。
這個真要好好做啊,畢竟題目看錯要寫正確答案...有點難 www

要注意的一點是用函式抓像素的位置是相對於form原點的位置,但標尺抓到的是螢幕的絕對位置。
所以form的原點可能要抓一下。(然後在form標到的點減原點,即為form上的位置值)

能夠抓到正確的matrix後,就代表能夠看清題目了,可以開始動手囉!!

簡述一下我寫的流程

抓form 沒有就用system開一個
掃螢幕取得數字分布狀態
while(1){

    直觀解(絕對正確):
        周遭剩下空格=數字-原本旗子->都插上旗
        周遭旗子數=數字->左右鍵齊擊,直接打開
        重掃螢幕*可以用遞迴,掃剛開的格子附近的,或是全掃

    一次假設(絕對正確):
        假設此格是旗子或空格,旁邊必然的情形繼續推理下去,當有矛盾,則假設錯誤
        重掃螢幕*可以用遞迴,掃剛開的格子附近的,或是全掃

    枚舉:
        枚舉所有情形並記錄(就是b043 , 當然 , 有機率錯):
        把所有情況舉出來,並將是旗子的加到該格上,我還用了科學記號(自己宣告的資料型態),
        加上排列組合的計算才完成
        重掃螢幕*可以用遞迴,掃剛開的格子附近的,或是全掃

}

大概就是這樣,附上Demo


my code on github

在網上有發現algorithm , 線性代數的解法,還沒研究,不過感覺會快很多。

nobodyzxc 發表在 痞客邦 留言(0) 人氣()

您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

請輸入暱稱 ( 最多顯示 6 個中文字元 )

請輸入標題 ( 最多顯示 9 個中文字元 )

請輸入內容 ( 最多 140 個中文字元 )

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼