用C++实现中国象棋

项目介绍

        最近学习到了STL库,了解到一些很实用的容器,同时我也是个象棋爱好者,想着能不能做个象棋的游戏小程序出来,运用一下所学到的知识点,于是动手做了这个项目,花了两天左右的时间基本完成,不过还有一些功能(将军提示、强制应将和困毙检测等)没做出来,需要后续做一些更新优化,先上图展示一下效果,大家看看还有没有什么地方需要改进的

效果展示

原始局面

除车炮类棋子的步数变化有限,可以列出当前棋子所有的变化,然后用算法判断下一步是否合理,不合理的排除(如超出棋盘范围,下一步点位被己方棋子占用,兵卒未过河不能平,马和象会被蹩腿和塞象眼等),最终结果提示给玩家,让玩家做选择,如图:

车类、炮类棋子可以走不限格数,列出所有变化很麻烦,因此拆分成多步,每步以一格为单位,让玩家通过wsad键来控制上下左右移动(如果中途更换成别的方向键会重置回原始位置),如果被自己棋子挡住或者要到棋盘外边会发出提示,走到固定位置后,需要玩家确认是否走棋,等到确认后再轮到对方走棋。如图:

跟正常的象棋规则一样,将帅不能照面,但是在当前程序中,玩家是可以走成这个局面的,同时会多出一个飞将的选择,但是在大多数的网络游戏中,玩家并不能走成这个局面,软件会限制走禁招,而且现在也没有将军提示的功能,游戏胜利目标为吃掉敌方的主将,如下图:

如果想要退出对局,可以选择求和或者认输,输出对局结果后将会退回到主界面

 请求和棋,同意

 和棋请求被拒绝

轮到一方走棋时,如果认输则判定己方落败,另一方获胜

 项目源码

源码非常多,包含了许多头文件和源文件,单一个棋子的类文件就差不多200行,这里就只放一些关键性源码:

//Main.cpp----------主菜单界面
#include "Menu.h"
#include "Layout.h"
//制作一个象棋程序
//1. 需要一个开始菜单
//2. PVP模式(不需要做选择红方/黑方选项)
//3. 打印一个棋盘
//4. 在棋盘上打印棋子
int main() {int tab;while (1) {Menu();cin >> tab;switch (tab){case 0:cout << "游戏已退出" << endl;system("pause");return 0;case 1:Layout();break;default:cout << "请输入正确的选项!" << endl;break;}system("cls");}
}//Layout.cpp----------游戏界面
#include "Layout.h"
#include "config.h"
//1.按行打印
//2.按列打印
//3.判断棋子
//4.划分阵营 (红方为1,黑方为0)
//5.用双向数组存放,头插法放入红方,尾插法放入黑方,便于管理
//6.先判断棋子当前状态,再执行移动
//7.依次编写每种棋子的走法规则和状态检测
//8.测试
deque<Chess*> Chess::d;
int Chess::tail;
int Chess::bound;
int tab;
int result;
bool isMore;
int mChessIndex;
void color(int a) {SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), a);
}
void Layout() {Chess::d = InitChess();while (1){/*if (cin.fail()) {cin.clear();cin.ignore();}*/Board();int index;if (!isMore)index = selectChess();elseindex = mChessIndex;if (index == -1) {if (tab == 1) {cout << "红方希望求和,是否同意(Y.同意/N.拒绝)?" << endl;}if (tab == 0) {cout << "黑方希望求和,是否同意(Y.同意/N.拒绝)?" << endl;}char confirm;cin >> confirm;if (confirm == 'Y' || confirm == 'y') {result = 2;}else {cout << "已拒绝和棋!" << endl;system("pause");tab = !tab;}}else if (index == -2) {cout << "是否认输(Y.确认/N.取消)?" << endl;char confirm;cin >> confirm;if (confirm == 'Y' || confirm == 'y') {if (tab == 1) {result = 0;}if (tab == 0) {result = 1;}}else {cout << "已取消!" << endl;system("pause");tab = !tab;}}else if (index == -3) {cout << "已返回!" << endl;system("pause");tab = !tab;}else {if (!(Chess::d[index]->findRoad())) {//循环if (Chess::d[index]->isMoving) {//未移动完成isMore = true;}else {//返回isMore = false;cout << "已取消!" << endl;system("pause");}tab = !tab;}else {//移动完成isMore = false;cout << "移动完成!" << endl;Chess::d[index]->isMoving = false;system("pause");}}Check();if (result == 0) {cout << "游戏结束,黑胜红负!" << endl;system("pause");break;}if (result == 1) {cout << "游戏结束,红胜黑负!" << endl;system("pause");break;}if (result == 2) {cout << "游戏结束,和棋!" << endl;system("pause");break;}tab = !tab;}for (int i = 0; i < Chess::tail + 1; i++) {//释放所有棋子在堆区开辟的空间delete Chess::d[i];}
}
void Board(){system("cls");cout << "1 ==2 ==3 ==4 ==5 ==6 ==7 ==8 ==9 " << endl;for (int y = 1; y < 11; y++) {for (int x = 1; x < 10; x++) {//棋子点位int obj = Chess::isHasChess(x, y);if (obj != -1) {//有棋子if (Chess::d[obj]->m_Camp == 1) {//代表红方color(64);}else {color(32);//代表黑方}cout << Chess::d[obj]->m_Name;color(7);}else {//无棋子if (y == 5 || y == 6) {cout << LINE;}else {cout << NODE;}}//棋子点位if (x != 9) {cout << LINE;}}cout << endl;//竖线区,不用判断有无棋子if (y != 10) {if (y == 5) {cout << "|      楚河              汉界   | ";}else {for (int x = 1; x < 10; x++) {cout << VLINE;if (x != 9) {cout << spSign(x, y);}}}cout << endl;}}cout << "九==八==七==六==五==四==三==二==一" << endl;if (tab == 1) {cout << "当前轮到红方走棋:" << endl;}else {cout << "当前轮到黑方走棋:" << endl;}return;
}
void Check() {if (Chess::d[0]->isDead) {//红帅死亡result = 0;}if (Chess::d[Chess::tail]->isDead) {//黑将死亡result = 1;}
}
string spSign(int x, int y) {if (x == 4) {if (y == 1 || y == 8) {return BSLASH;}if (y == 2 || y == 9) {return SLASH;}}if (x == 5) {if (y == 1 || y == 8) {return SLASH;}if (y == 2 || y == 9) {return BSLASH;}}return SPACE;
}
deque<Chess*> InitChess() {tab = 1;result = 3;isMore = false;deque<Chess*> Rchess;Chess* jiang = new Jiang(0);Chess* shuai = new Jiang(1);//留空===========================留空//int k = 1;for (int i = 0; i < 2; i++) {Chess* BXiang = new Xiang(0, 5 + 2 * k);Rchess.push_back(BXiang);Chess* RXiang = new Xiang(1, 5 + 2 * k);Rchess.push_front(RXiang);Chess* Bshi = new Shi(0, 5 + k);Rchess.push_back(Bshi);Chess* Rshi = new Shi(1, 5 + k);Rchess.push_front(Rshi);Chess* pao = new Pao(0, 5 + 3 * k);Rchess.push_back(pao);Chess* bao = new Pao(1, 5 + 3 * k);Rchess.push_front(bao);Chess* Bma = new Ma(0, 5 + 3 * k);Rchess.push_back(Bma);Chess* Rma = new Ma(1, 5 + 3 * k);Rchess.push_front(Rma);Chess* che = new Che(0, 5 + 4 * k);Rchess.push_back(che);Chess* ju = new Che(1, 5 + 4 * k);Rchess.push_front(ju);k = -k;}for (int x = 1; x < 10; x += 2) {Chess* zu = new Bing(0, x);Rchess.push_back(zu);Chess* bing = new Bing(1, x);Rchess.push_front(bing);}Rchess.push_back(jiang);Rchess.push_front(shuai);//cout << Rchess.size();Chess::tail = Rchess.size() - 1;Chess::bound = Rchess.size() / 2;return Rchess;
}
int selectChess() {deque<int> index_j; //老将deque<int> index_b; //兵deque<int> index_c; //车deque<int> index_m; //马deque<int> index_p; //炮deque<int> index_s; //士deque<int> index_x; //象int select;//选择cout << "请选择你要走的棋子:" << endl;cout << "(";if (tab == 1) {//红方走棋,遍历红方棋子总数deque<int> r_d = Chess::getRchess();for (int i = 0; i < r_d.size(); i++) {if (Chess::d[r_d[i]]->m_Name == "帅") {if (index_j.empty())cout << "1. 帅 ";index_j.push_back(r_d[i]);}if (Chess::d[r_d[i]]->m_Name == "兵") {if (index_b.empty())cout << "2. 兵 ";index_b.push_back(r_d[i]);}if (Chess::d[r_d[i]]->m_Name == "車") {if (index_c.empty())cout << "3. 車 ";index_c.push_back(r_d[i]);}if (Chess::d[r_d[i]]->m_Name == "馬") {if (index_m.empty())cout << "4. 馬 ";index_m.push_back(r_d[i]);}if (Chess::d[r_d[i]]->m_Name == "砲") {if (index_p.empty())cout << "5. 砲 ";index_p.push_back(r_d[i]);}if (Chess::d[r_d[i]]->m_Name == "仕") {if (index_s.empty())cout << "6. 仕 ";index_s.push_back(r_d[i]);}if (Chess::d[r_d[i]]->m_Name == "相") {if (index_x.empty())cout << "7. 相 ";index_x.push_back(r_d[i]);}}}if (tab == 0) {//黑方走棋,遍历黑方棋子总数deque<int> b_d = Chess::getBchess();for (int i = 0; i < b_d.size(); i++) {if (Chess::d[b_d[i]]->m_Name == "将") {if (index_j.empty())cout << "1. 将 ";index_j.push_back(b_d[i]);}if (Chess::d[b_d[i]]->m_Name == "卒") {if (index_b.empty())cout << "2. 卒 ";index_b.push_back(b_d[i]);}if (Chess::d[b_d[i]]->m_Name == "车") {if (index_c.empty())cout << "3. 车 ";index_c.push_back(b_d[i]);}if (Chess::d[b_d[i]]->m_Name == "马") {if (index_m.empty())cout << "4. 马 ";index_m.push_back(b_d[i]);}if (Chess::d[b_d[i]]->m_Name == "炮") {if (index_p.empty())cout << "5. 炮 ";index_p.push_back(b_d[i]);}if (Chess::d[b_d[i]]->m_Name == "士") {if (index_s.empty())cout << "6. 士 ";index_s.push_back(b_d[i]);}if (Chess::d[b_d[i]]->m_Name == "象") {if (index_x.empty())cout << "7. 象 ";index_x.push_back(b_d[i]);}}}cout << " 9. 求和  0.认输)" << endl;
retry:cin >> select;if (cin.fail()) {cin.clear();cin.ignore();select = -1;}switch (select){case 1:return index_j[0];case 2:if (!(index_b.empty())){return selectChess(index_b);}case 3:if (!(index_c.empty())) {isMore = true;//用全局变量存储多步棋的下标mChessIndex = selectChess(index_c);return mChessIndex;}case 4:if (!(index_m.empty())) {return selectChess(index_m);}case 5:if (!(index_p.empty())) {isMore = true;//用全局变量存储多步棋的下标mChessIndex = selectChess(index_p);return mChessIndex;}case 6:if (!(index_s.empty())) {return selectChess(index_s);}case 7:if (!(index_x.empty())) {return selectChess(index_x);}case 9:return -1;case 0:return -2;default:cout << "棋子已死亡或没有该棋子!请重新选择" << endl;goto retry;}return 0;
}
int selectChess(deque<int> ds) {int num = ds.size(); //当前兵种有多少颗棋子int select;cout << "请选择:";if (Chess::d[ds[0]]->m_Camp == 1) {for (int i = 0; i < num; i++) {cout << i + 1 << ". " << Chess::d[ds[i]]->m_Name << Chess::d[ds[i]]->xNumToChar() << " ";}}if (Chess::d[ds[0]]->m_Camp == 0) {for (int i = 0; i < num; i++) {cout << i + 1 << ". " << Chess::d[ds[i]]->m_Name << Chess::d[ds[i]]->getPos().m_x << " ";}}cout << "0. 返回" << endl;
retry2:cin >> select;switch (select){case 1:return ds[0];break;case 2:if(select<=num)return ds[1];break;case 3:if (select <= num)return ds[2];break;case 4:if (select <= num)return ds[3];break;case 5:if (select <= num)return ds[4];break;case 0:isMore = false;return -3;default:break;}cout << "棋子已死亡或没有该棋子!请重新选择" << endl;goto retry2;
}//Layout.h
#pragma once
#include <deque>
#include "Chess.h"
#define LINE "—"
#define VLINE "| "
#define SPACE "  "
#define SLASH "/ "
#define BSLASH "\\ "
#define BSLASH "\\ "
#define NODE "+ "void color(int a);
void Layout();
void Board();
void Check();
string spSign(int x,int y);
int selectChess();
int selectChess(deque<int>);
deque<Chess*> InitChess();/*原始局面cout << "1 ==2 ==3 ==4 ==5 ==6 ==7 ==8 ==9 " <<endl;cout << "车—马—象—士—将—士—象—马—车" << endl;cout << "|   |   |   | \\ | / |   |   |   | " << endl;cout << "+ —+ —+ —+ —+ —+ —+ —+ —+ " << endl;cout << "|   |   |   | / | \\ |   |   |   | " << endl;cout << "+ —炮—+ —+ —+ —+ —+ —炮—+ " << endl;cout << "|   |   |   |   |   |   |   |   | " << endl;cout << "卒—+ —卒—+ —卒—+ —卒—+ —卒" << endl;cout << "|   |   |   |   |   |   |   |   | " << endl;cout << "—————————————————" << endl;cout << "|      楚河              汉界   | " << endl;cout << "—————————————————" << endl;cout << "|   |   |   |   |   |   |   |   | " << endl;cout << "兵—+ —兵—+ —兵—+ —兵—+ —兵" << endl;cout << "|   |   |   |   |   |   |   |   | " << endl;cout << "+ —砲—+ —+ —+ —+ —+ —砲—+ " << endl;cout << "|   |   |   | \\ | / |   |   |   | " << endl;cout << "+ —+ —+ —+ —+ —+ —+ —+ —+ " << endl;cout << "|   |   |   | / | \\ |   |   |   | " << endl;cout << "車—馬—相—仕—帅—仕—相—馬—車" << endl;cout << "九==八==七==六==五==四==三==二==一" <<endl;
*/
/*空棋盘cout << "1 ==2 ==3 ==4 ==5 ==6 ==7 ==8 ==9 " <<endl;cout << "+ —+ —+ —+ —+ —+ —+ —+ —+ " << endl;cout << "|   |   |   | \\ | / |   |   |   | " << endl;cout << "+ —+ —+ —+ —+ —+ —+ —+ —+ " << endl;cout << "|   |   |   | / | \\ |   |   |   | " << endl;cout << "+ —+ —+ —+ —+ —+ —+ —+ —+ " << endl;cout << "|   |   |   |   |   |   |   |   | " << endl;cout << "+ —+ —+ —+ —+ —+ —+ —+ —+ " << endl;cout << "|   |   |   |   |   |   |   |   | " << endl;cout << "—————————————————" << endl;cout << "|      楚河              汉界   | " << endl;cout << "—————————————————" << endl;cout << "|   |   |   |   |   |   |   |   | " << endl;cout << "+ —+ —+ —+ —+ —+ —+ —+ —+ " << endl;cout << "|   |   |   |   |   |   |   |   | " << endl;cout << "+ —+ —+ —+ —+ —+ —+ —+ —+ " << endl;cout << "|   |   |   | \\ | / |   |   |   | " << endl;cout << "+ —+ —+ —+ —+ —+ —+ —+ —+ " << endl;cout << "|   |   |   | / | \\ |   |   |   | " << endl;cout << "+ —+ —+ —+ —+ —+ —+ —+ —+ " << endl;cout << "九==八==七==六==五==四==三==二==一" <<endl;
*///config.h----------所需的头文件库
#pragma once
#include "Jiang.h"
#include "Bing.h"
#include "Shi.h"
#include "Xiang.h"
#include "Che.h"
#include "Pao.h"
#include "Ma.h"

其余还有许多棋子的源码,这里就不一一展示了,想了解全部源码的话可以到 GitHub - LunarMeal/Chess 自行拿取

更多功能

接下来就是完成被将军的检测与提示,然后在这个基础上强制玩家应将(不过我感觉不强制应将的话比较好,像现实走棋一样让玩家去摸索)。然后完成棋谱的导入和导出功能(可以按照当前棋形打印一份txt文件保存下来,然后在主菜单界面加一个导入棋谱的功能,获取所有棋子的信息来继续当前对局,当然也可以自己按照格式手写棋谱)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/58687.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++中国象棋

ssdut c的大作业&#xff0c;在控制台的界面实现人人对弈&#xff0c;比较适合初学&#xff0c;自己设计了一些简单算法&#xff0c;两百多行完成。 以下正文&#xff1a; 完成中国象棋游戏&#xff0c;实现如下功能&#xff1a; 1.实现人与人之间象棋的对弈。 2.每次走子之…

Java版本实现中国象棋

预览效果 中国象棋 游戏介绍&#xff1a;中国象棋是起源于中国的一种棋&#xff0c;属于二人对抗性游戏的一种&#xff0c;在中国有着悠久的历史&#xff0c;由于用具简单&#xff0c;趣味性强&#xff0c;成为流行极为广泛的棋艺活动。阿巴阿巴阿巴 代码结构&#xff1a;Butto…

数影周报:小米汽车供应商被罚100万,1688延迟下线“1688买家旺旺”

本周看点&#xff1a;小米汽车供应商被罚100万&#xff1b;特斯拉将在硅谷招聘AI 人才&#xff1b;阳光出行等25款 App涉违规收集使用个人信息等&#xff1b;1688延迟于2月8日下线“1688买家旺旺”&#xff1b;微蚁科技完成数千万元B轮融资...... 数据安全那些事 小米汽车供应商…

Coggle 30 Days of ML (23年7月)任务二:数据可视化

Coggle 30 Days of ML (23年7月&#xff09;任务二&#xff1a;数据可视化 任务二&#xff1a;对数据集字符进行可视化&#xff0c;统计标签和字符分布 说明&#xff1a;在这个任务中&#xff0c;需要使用Pandas库对数据集的字符进行可视化&#xff0c;并统计数据集中的标签和…

阿里云服务器ECS是什么?详细介绍

阿里云服务器ECS是什么&#xff1f;云服务器和传统的物理服务器有什么区别&#xff1f;云服务器有哪些优势&#xff1f;云服务器可以什么&#xff1f;云服务器架构及云服务器包含哪些功能组件&#xff1f;阿里云百科来详细说下什么是云服务器ECS&#xff1a; 目录 阿里云服务…

使用Chrome修改user agent模拟微信内置浏览器

很多时候&#xff0c;我们需要模拟微信内置浏览器&#xff0c;今天教大家用 chrome 简单模拟。如图设置&#xff1a; F12或者右键审查元素进入开发者模式&#xff0c;点击Emulation&#xff0c;然后点击Network&#xff0c;把Spoof user agent改成Other&#xff0c;并把下面…

数据分析案例-足球运动员分析

目录 加载数据 查看数据 数据详细 ​缺值处理 异常值处理 重复值处理 运动员身高和体重分布 左脚右脚使用数量 俱乐部球员评分分析 足球运动员数是否与出生日期相关 身高与体重是否具有相关性 加载数据 #加载足球运动员数据 import numpy as np import pandas as pd impor…

如何用算法预测世界杯?

预测2021欧洲世界杯 世界杯预测结果预测的原理是什么&#xff1f;周易算卦原理算命可以解决的问题善易者不卜 人工智能预测原理预测模型&#xff1a;逻辑回归算法可以预测的问题 可以单挑整个华尔街的算法现代足球 世界杯预测结果 预测2021年欧洲世界杯&#xff0c;也是一道考…

采用 Python 机器学习预测足球比赛结果

足球是世界上最火爆的运动之一,如何运用机器学习来预测足球比赛结果,是每一个足球爱好者所向往的! 本场 Chat 适合有 Python 基础的机器学习初学者,我们带你一起熟悉机器学习的开发流程,帮你快速建立起自己的英超比赛预测模型! 你将获取到如下内容: 人工智能在线建模平…

按键精灵移动端系列 - 按键精灵IOS版 之 网络已断开,请检查网络连接.解决方案.

由于很多网友对这种问题,不知道如何处理.因本人也曾遇到过这种情况.经过不懈努力终于解决了这个神奇的BUG.长话短说上操作流程.如果觉得给力,请三连 点赞. 收藏. 转发. 谢谢您的支持. ** 1 安装雷锋源: apt.abcydia.com 2安装好雷锋源, 搜索: conditionalwifi 更新到最新版 …

按键精灵助手无法连接模拟器解决方案【适用任何模拟器】

找到按键精灵安装地址 D:\ProgramData\按键精灵\按键精灵手机助手\android 找到木木安装地址&#xff0c;并搜索adb.exe,未找到 但是在D:\Program Files (x86)\MuMu\emulator\nemu\vmonitor\bin找到 adb_server.exe 以及另外两个.dll 复制着三个文件到按键精灵上述文件夹&#…

国行版苹果 ios 按键精灵无法联网问题处理

国行版苹果手机安装按键精灵后无法联网的问题&#xff1a; 操作步骤&#xff1a; &#xff08;1&#xff09;自行把苹果手机进行越狱&#xff0c;找到并打开越狱商店“Cydia” &#xff0c;其他商店同理&#xff0c;按照如下图步骤添加 “雷锋源”&#xff0c;源地址&#xff…

网易mumu显示无法连接服务器,网易MuMu无法连接网络_网易MuMu如何实现多开

网易MuMu是由网易全方面打造的一种非常具有精品特色的游戏服务平台&#xff0c;这款游戏服务平台在下载安装之后可以直接运行电脑上的各种不同游戏和应用程序&#xff0c;同时它的兼容性是比较强的&#xff0c;有着非常流畅的操作过程&#xff0c;还可以通过智能辅助等优秀特色…

网易mumu模拟器adb连接配置

一、 网易mumu模拟器下载 二、安装模拟器到本机指定目录 1、例如&#xff1a;D:\Program Files\MuMu 2、adb文配置相关文件位于&#xff1a;D:\Program Files\MuMu\emulator\nemu\vms\myandrovm_vbox86下&#xff0c;如下图所示&#xff1a; 3、打开myandrovm_vbox86.nemu文件…

uni-app 连接不上夜神模拟器

uni-app 连接不上夜神模拟器 第一步打开运行设置 设置端口号 第二步通过cmd命令去连接模拟器 我这利用的是HX 找到&#xff1a;HBuilderX.3.1.17.20210608.full\HBuilderX\plugins\launcher\tools\adbs 直接cmd 执行下面两个命令 adb connect 127.0.0.1:62001 adb devices…

夜神模拟器无法连接网络的解决办法

我们经常会在电脑上安装安卓模拟器来玩一些手机游戏或者运行手机软件&#xff0c;但是有时候可能由于网络不好等原因导致模拟器连接不上网络。比如夜神模拟器无法连接网络怎么办&#xff1f;下面就来看看解决的办法。 夜神模拟器无法连接网络怎么办&#xff1a; 1、同时按下“w…

按键精灵手机助手如何连接安卓版按键精灵如何连接手机助手

通过上述讲解过的按键精灵如何下载文章得知,按键精灵手机版分为两个版本,分别为安卓版和IOS版,都是需要连接在按键精灵手机助手运行,按键精灵手机助手则必须在电脑上安装运行。好的,下面我们就来逐步讲解一下,手机版按键精灵如何使用。 首先,我们打开已经安装完成的按键…

天天模拟器显示获取服务器失败,天天模拟器无法联网怎么办-天天模拟器不能上网的解决方法 - 河东软件园...

天天模拟器是目前最热门的安卓模拟器软件&#xff0c;这是国内自主研发的一款优秀模拟器&#xff0c;其采用了持OpenGL硬件加速技术&#xff0c;能够帮助用户稳定的运行各类安卓应用&#xff0c;&#xff0c;并且具备了应用多开&#xff0c;软件具备了操作简单、稳定流畅等诸多…

qq手机助手连接服务器失败是什么原因,按键精灵手机助手教程,按键精灵手机助手连不上手机解决方法...

下面是按键精灵手机助手教程&#xff0c;按键精灵手机助手连不上手机解决方法 一、打开已安装的软件并单击[新建脚本]以创建新的游戏脚本 二、单击[我的脚本]查看创建或下载的脚本 三、点击[移动连接]将您的移动电话与数据线连接&#xff0c;方便测试脚本 我们得到了根用户的许…

总是助手服务器失败怎么回事,《遇见逆水寒》连接服务器失败解决方法汇总 服务器连接失败问题原因...

导 读 遇见逆水寒连接服务器失败怎么回事&#xff0c;近期不少小伙伴都在反映遇见逆水寒助手连接服务器失败&#xff0c;一直登不上去是怎么回事&#xff0c;小编这就为大家分享下遇见逆水寒连接服务器失败解决方法。 遇见逆水寒连接服务器失败解决方法... 遇见逆水寒连接服务器…