激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C# - 微信跳一跳自動腳本C#代碼實現

微信跳一跳自動腳本C#代碼實現

2022-02-19 15:13C-LanQ C#

這篇文章主要為大家詳細介紹了微信跳一跳自動腳本C#代碼實現資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

前言

csdn前陣子推送了篇文章,講的是微信跳一跳的技術實現,大致瀏覽,發現難度不高,很適合練手。

思路

微信跳一跳自動腳本C#代碼實現

adb得到屏幕截圖,轉換成bitmap逐像素分析圖像,得到跳躍起點和終點坐標,最后adb按壓屏幕進行跳躍 

相關知識

adb創建

·在https://adb.clockworkmod.com提前下載adb

·通過 process類 創建進程運行adb 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
process p = new process();
p.startinfo = new processstartinfo()
{
filename = @"e:\adb\adb.exe",
arguments = str,//要執行的命令
useshellexecute =false,//拒絕使用系統自帶的shell
redirectstandardinput =true,//接受輸入
redirectstandardoutput =true, //接受輸出
redirectstandarderror =true,//接受錯誤
createnowindow =true,//不創建窗口
};
p.start();
string s = p.standardoutput.readtoend();//讀取輸出
p.waitforexit();

常用adb指令

·讀取手機型號

?
1
cmd("shell getprop ro.product.model");

·獲取屏幕截圖

?
1
2
cmd(@"shell screencap -p/sdcard/1.png"); //屏幕截圖并保存
cmd(@"pull /sdcard/1.pnge:\adb"); //上傳文件

·按壓屏幕

?
1
2
cmd(string.format("shellinput swipe {0} {1} {2} {3} {4}", x0, y0, x1, y1, time));
//從0點點擊到1點持續time毫秒

adb算是搞定了,現在寫個界面,獲取屏幕截圖! 

微信跳一跳自動腳本C#代碼實現

取棋子坐標思路

微信跳一跳自動腳本C#代碼實現觀察發現
     ·棋子的顏色為固定值,逐取出棋子底部顏色為 rgb(55, 52,92)
     ·棋子的底部y軸坐標在區間[1000,1250] 

實例化gitmap對象,寫一個遍歷像素點的循環

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
bitmap bitmap =new bitmap(@"e:\adb\1.png");
 pointchess =newpoint();
 //棋子顏色 color.fromargb(55, 52, 92))
 for (int y = 1000; y < 1250;y++)
 {
  for (int x = 0; x <bitmap.width; x++)
  {
  if(bitmap.getpixel(x,y) == color.fromargb(57, 58, 102))
  {
  chess.x = x;
  chess.y = y;
  break;
  }
  }
  if (chess != new point())
  {
  break;
  }
 }
 if (chess == new point())
 {
  messagebox.show("找不到棋子!初始化失?。?quot;);
  bitmap.dispose();
  return;
 }

底部坐標被正確的取了出來

 微信跳一跳自動腳本C#代碼實現

完美!現在取出頂點和底部坐標!

微信跳一跳自動腳本C#代碼實現觀察發現
·背景顏色為漸變色,所以橫向比較,與前一個點差別最大的點就是頂點
·平面顏色一般為純色,也可能是漸變色,所以得到頂點后作豎向比較,最后一個與前點      差別最大的點就是底部坐標
·頂點的y軸坐標在區間[650-1050] 

首先寫一個判斷顏色相似度的方法 

?
1
2
3
4
5
6
7
8
bool colorabout(colorcolor0, color color1)
 {
 int i = 20; //顏色差值
 int r =math.max(color0.r,color1.r)- math.min(color0.r, color1.r);
 int g = math.max(color0.g,color1.g) - math.min(color0.g, color1.g);
 int b = math.max(color0.b,color1.b) - math.min(color0.b, color1.b);
 return!((math.max(math.max(r,g),b) + math.min(math.min(r, g), b)) > i);
 }

還是寫一個遍歷點的循環,調用顏色相似度方法作橫向比較取出頂點坐標和底部坐標

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
point rectvertex = new point();
 point rectend = new point();
 
 for (int y = 650; y < 1050;y++)
 {
  for (int x = 1; x <bitmap.width; x++)
  {
  booliscolorabout = !colorabout(bitmap.getpixel(x - 1, y), bitmap.getpixel(x, y));
  if ((x < chess.x - 75 || x > chess.x + 75)&& iscolorabout) //排除棋子坐標,避免錯誤的將棋子作頂點
  {
  rectvertex.x = x;
  rectvertex.y = y;
  break;
  }
  }
  if (rectvertex !=new point())
  {
  break;
  }
 }
 if (rectvertex ==new point())
 {
  messagebox.show("未知的物體!初始化失?。?quot;);
  bitmap.dispose();
  return;
 }
 
 
 colorrectcolor = bitmap.getpixel(rectvertex.x,rectvertex.y+1);
 if (rectend == new point())
 {
  for (int y = rectvertex.y; y< 1200; y++)
  {
  booliscolorabout = colorabout(rectcolor, bitmap.getpixel(rectvertex.x, y));
  if(iscolorabout)
  {
  rectend.x = rectvertex.x;
  rectend.y = y;
  }
  }
 }

ok!取出了坐標剩下的就是計算距離(正好前幾天才學的兩點距離公式)和跳躍了!開始循環!

lanq 2017.1.6 github-wecharjump

拋磚引玉 僅供學習!

更多內容大家可以參考專題《微信跳一跳》進行學習。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://blog.csdn.net/qq_15505341/article/details/78987317

延伸 · 閱讀

精彩推薦
  • C#C#裁剪,縮放,清晰度,水印處理操作示例

    C#裁剪,縮放,清晰度,水印處理操作示例

    這篇文章主要為大家詳細介紹了C#裁剪,縮放,清晰度,水印處理操作示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    吳 劍8332021-12-08
  • C#C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    這篇文章主要介紹了C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題,簡單描述了訪問者模式的定義并結合具體實例形式分析了C#使用訪問者模式解決長...

    GhostRider9502022-01-21
  • C#C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    這篇文章主要介紹了C# 實現對PPT文檔加密、解密及重置密碼的操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下...

    E-iceblue5012022-02-12
  • C#WPF 自定義雷達圖開發實例教程

    WPF 自定義雷達圖開發實例教程

    這篇文章主要介紹了WPF 自定義雷達圖開發實例教程,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下...

    WinterFish13112021-12-06
  • C#C#實現XML文件讀取

    C#實現XML文件讀取

    這篇文章主要為大家詳細介紹了C#實現XML文件讀取的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Just_for_Myself6702022-02-22
  • C#C#通過KD樹進行距離最近點的查找

    C#通過KD樹進行距離最近點的查找

    這篇文章主要為大家詳細介紹了C#通過KD樹進行距離最近點的查找,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    帆帆帆6112022-01-22
  • C#深入解析C#中的交錯數組與隱式類型的數組

    深入解析C#中的交錯數組與隱式類型的數組

    這篇文章主要介紹了深入解析C#中的交錯數組與隱式類型的數組,隱式類型的數組通常與匿名類型以及對象初始值設定項和集合初始值設定項一起使用,需要的...

    C#教程網6172021-11-09
  • C#Unity3D實現虛擬按鈕控制人物移動效果

    Unity3D實現虛擬按鈕控制人物移動效果

    這篇文章主要為大家詳細介紹了Unity3D實現虛擬按鈕控制人物移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一...

    shenqingyu060520232410972022-03-11
主站蜘蛛池模板: 成人影片在线免费观看 | 久久久久九九九女人毛片 | 欧美精品一区二区视频 | 天堂成人一区二区三区 | 成年性羞羞视频免费观看无限 | 日本一区二区精品 | 欧美爱爱一区二区 | 香蕉在线看 | 国产18视频 | 日韩精品久久久 | 中文字幕在线第二页 | 麻豆19禁国产青草精品 | av在线1 | 国产精品久久久久久久久久东京 | 91精品国产综合久久久动漫日韩 | 全黄裸片武则天艳史 | 久久亚洲网 | 黄色片网站在线免费观看 | 黑人日比 | 成人三级免费电影 | 成人羞羞在线观看网站 | 国产激情网 | 草久视频在线观看 | 日韩av一二三区 | av电影手机在线看 | 久久精品欧美一区 | 在线看免电影网站 | 国产一区二区亚洲 | 久草手机视频在线观看 | 欧美国产91| 欧美视频网 | 精品一区二区三区中文字幕老牛 | 性欧美暴力猛交69hd | 国产成人自拍小视频 | 久草视频手机在线观看 | 91看电影 | 成人免费av在线播放 | 欧美一级黄色网 | 精品中文字幕久久久久四十五十骆 | www.狠狠插.com | 免费a级作爱片免费观看欧洲 |