本文目录
一、微信小游戏制作可视化工具怎样下载源码
微信小游戏制作可视化工具下载源码。
准备工作:
1.一部已经root的Android手机
2.安装微信6.6.1版本的apk
3.电脑上已安装AndroidSDK并可以使用adb命令
需要注意的是必须是已经root了的Android手机,否则将没有权限访问对应手机的系统文件夹。
通过USB将手机连接到电脑上,然后运行以下命令
$adbdevices
如果显示了一下信息
1Listofdevicesattached
271MBBL6228EUdevice
说明手机已经连接到电脑上,如显示未找到adb命令,则说明AndroidSDK安装错误或adb未添加到电脑path中,请自行上网进行相应查阅。
手机连接电脑成功后,运行一下命令
1$adbshell
2$su
终端出类似root@{手机型号}前缀,说明已经进入到root模式下
$cd/data/data/com.tencent.mm/MicroMsg/{User}/appbrand/pkg
{User}为当年用户的用户名,类似于1ed**********c514a18
然后当前目录就是微信用于存放小程序和小游戏下载包的位置
1$ls
2_-791877121_3.WXapkg
3_1079392110_5.Wxapkg
4_1079392110_5.Wxapkg_xdir
5_1123949441_92.WXapkg
6_576754918_1.Wxapkg
以上是我的微信中所下载过的小程序和小游戏源码
因为/data目录为系统级目录,无法直接将其进行复制,需要重新挂载为可操作模式
$mount-0remount,rW/data
此时就可以将当前目录下的文件拷贝到sdcard中
$cat1079392110_5.WXapkg>/mnt/sdcard/_1079392110_5.WXapkg
然后将_1079392110_5.wxapkg文件拷贝到电脑里,通过该脚本进行解压后,即为其源码。
编译源码
通过微信小游戏开发工具新建一个空白的小程序或者小游戏的项目,主要不要选择快速启动模板。
然后把刚才解压出来的源代码复制到刚刚创建的项目目录中,开发工具会提示编译错误,这时只要在项目中新建一个game.json文件,并在文件里写入以下代码
{“deviceOrientation":"portrait"}
然后将开发工具的调试基础库改为gam,程序就会在开发者工具里运行起来了。
二、微信小程序游戏怎么制作还有源代码怎么弄
制作微信小程序游戏类,不懂代码的话可以找家小程序开发公司来帮你完成。如果想要找到一家比较有实力的小程序开发公司,可以从以下方面考虑:
1、适合自己的,根据你的功能需求寻找合适的,目前已经有很多现成的模板可以直接用,既能满足要求又可以不用定制开发少花钱。
2、看小程序的功能是否丰富,要知道做小程序是第一步,后面利用各种活动推广去发展你的用户才是最重要的,所以一个小程序的营销插件决定了你以后推广的力度。
3、小程序装修是否支持自定义装修,有些小程序装修风格比较单一,只能按照模板装修,相对于自定义拖拽式装修就单调很多。
4、产品是否成熟稳定,有没有经过市场检验,是否在持续升级中。
5、售后服务是否跟得上,后面你们肯定会遇到一些自己解决不了的这样那样的问题,需要技术售后支持,如果服务跟不上只会耽误你们的工作进程。
6、价格合理、性价比高。
三、用C++编写的小游戏源代码
五子棋的代码:
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
using namespace std;
const int N=15;//15*15的棋盘
const char ChessBoardflag='';//棋盘标志
const char flag1='o';//玩家1或电脑的棋子标志
const char flag2='X';//玩家2的棋子标志
typedef struct Coordinate//坐标类
{
int x;//代表行
int y;//代表列
}Coordinate;
class GoBang//五子棋类
{
public:
GoBang()//初始化
{
InitChessBoard();
}
void Play()//下棋
{
Coordinate Pos1;//玩家1或电脑
Coordinate Pos2;//玩家2
int n= 0;
while(1)
{
int mode= ChoiceMode();
while(1)
{
if(mode== 1)//电脑vs玩家
{
ComputerChess(Pos1,flag1);//电脑下棋
if(GetVictory(Pos1, 0, flag1)== 1)//0表示电脑,真表示获胜
break;
PlayChess(Pos2, 2, flag2);//玩家2下棋
if(GetVictory(Pos2, 2, flag2))//2表示玩家2
break;
}
else//玩家1vs玩家2
{
PlayChess(Pos1, 1, flag1);//玩家1下棋
if(GetVictory(Pos1, 1, flag1))//1表示玩家1
break;
PlayChess(Pos2, 2, flag2);//玩家2下棋
if(GetVictory(Pos2, 2, flag2))//2表示玩家2
break;
}
}
cout<<"***再来一局***"<< endl;
cout<<"y or n:";
char c='y';
cin>> c;
if(c=='n')
break;
}
}
protected:
int ChoiceMode()//选择模式
{
int i= 0;
system("cls");//系统调用,清屏
InitChessBoard();//重新初始化棋盘
cout<<"***0、退出 1、电脑vs玩家 2、玩家vs玩家***"<< endl;
while(1)
{
cout<<"请选择:";
cin>> i;
if(i== 0)//选择0退出
exit(1);
if(i== 1|| i== 2)
return i;
cout<<"输入不合法"<< endl;
}
}
void InitChessBoard()//初始化棋盘
{
for(int i= 0; i< N+ 1;++i)
{
for(int j= 0; j< N+ 1;++j)
{
_ChessBoard[i][j]= ChessBoardflag;
}
}
}
void PrintChessBoard()//打印棋盘,这个函数可以自己调整
{
system("cls");//系统调用,清空屏幕
for(int i= 0; i< N+1;++i)
{
for(int j= 0; j< N+1;++j)
{
if(i== 0)//打印列数字
{
if(j!=0)
printf("%d", j);
else
printf("");
}
else if(j== 0)//打印行数字
printf("%2d", i);
else
{
if(i< N+1)
{
printf("%c|",_ChessBoard[i][j]);
}
}
}
cout<< endl;
cout<<"";
for(int m= 0; m< N; m++)
{
printf("--|");
}
cout<< endl;
}
}
void PlayChess(Coordinate& pos, int player, int flag)//玩家下棋
{
PrintChessBoard();//打印棋盘
while(1)
{
printf("玩家%d输入坐标:", player);
cin>> pos.x>> pos.y;
if(JudgeValue(pos)== 1)//坐标合法
break;
cout<<"坐标不合法,重新输入"<< endl;
}
_ChessBoard[pos.x][pos.y]= flag;
}
void ComputerChess(Coordinate& pos, char flag)//电脑下棋
{
PrintChessBoard();//打印棋盘
int x= 0;
int y= 0;
while(1)
{
x=(rand()% N)+ 1;//产生1~N的随机数
srand((unsigned int) time(NULL));
y=(rand()% N)+ 1;//产生1~N的随机数
srand((unsigned int) time(NULL));
if(_ChessBoard[x][y]== ChessBoardflag)//如果这个位置是空的,也就是没有棋子
break;
}
pos.x= x;
pos.y= y;
_ChessBoard[pos.x][pos.y]= flag;
}
int JudgeValue(const Coordinate& pos)//判断输入坐标是不是合法
{
if(pos.x> 0&& pos.x<= N&&pos.y> 0&& pos.y<= N)
{
if(_ChessBoard[pos.x][pos.y]== ChessBoardflag)
{
return 1;//合法
}
}
return 0;//非法
}
int JudgeVictory(Coordinate pos, char flag)//判断有没有人胜负(底层判断)
{
int begin= 0;
int end= 0;
int begin1= 0;
int end1= 0;
//判断行是否满足条件
(pos.y- 4)> 0? begin=(pos.y- 4): begin= 1;
(pos.y+ 4)>N? end= N: end=(pos.y+ 4);
for(int i= pos.x, j= begin; j+ 4<= end; j++)
{
if(_ChessBoard[i][j]== flag&&_ChessBoard[i][j+ 1]== flag&&
_ChessBoard[i][j+ 2]== flag&&_ChessBoard[i][j+ 3]== flag&&
_ChessBoard[i][j+ 4]== flag)
return 1;
}
//判断列是否满足条件
(pos.x- 4)> 0? begin=(pos.x- 4): begin= 1;
(pos.x+ 4)> N? end= N: end=(pos.x+ 4);
for(int j= pos.y, i= begin; i+ 4<= end; i++)
{
if(_ChessBoard[i][j]== flag&&_ChessBoard[i+ 1][j]== flag&&
_ChessBoard[i+ 2][j]== flag&&_ChessBoard[i+ 3][j]== flag&&
_ChessBoard[i+ 4][j]== flag)
return 1;
}
int len= 0;
//判断主对角线是否满足条件
pos.x> pos.y? len= pos.y- 1: len= pos.x- 1;
if(len> 4)
len= 4;
begin= pos.x- len;//横坐标的起始位置
begin1= pos.y- len;//纵坐标的起始位置
pos.x> pos.y? len=(N- pos.x): len=(N- pos.y);
if(len>4)
len= 4;
end= pos.x+ len;//横坐标的结束位置
end1= pos.y+ len;//纵坐标的结束位置
for(int i= begin, j= begin1;(i+ 4<= end)&&(j+ 4<= end1);++i,++j)
{
if(_ChessBoard[i][j]== flag&&_ChessBoard[i+ 1][j+ 1]== flag&&
_ChessBoard[i+ 2][j+ 2]== flag&&_ChessBoard[i+ 3][j+ 3]== flag&&
_ChessBoard[i+ 4][j+ 4]== flag)
return 1;
}
//判断副对角线是否满足条件
(pos.x- 1)>(N- pos.y)? len=(N- pos.y): len= pos.x- 1;
if(len> 4)
len= 4;
begin= pos.x- len;//横坐标的起始位置
begin1= pos.y+ len;//纵坐标的起始位置
(N- pos.x)>(pos.y- 1)? len=(pos.y- 1): len=(N- pos.x);
if(len>4)
len= 4;
end= pos.x+ len;//横坐标的结束位置
end1= pos.y- len;//纵坐标的结束位置
for(int i= begin, j= begin1;(i+ 4<= end)&&(j- 4>= end1);++i,--j)
{
if(_ChessBoard[i][j]== flag&&_ChessBoard[i+ 1][j- 1]== flag&&
_ChessBoard[i+ 2][j- 2]== flag&&_ChessBoard[i+ 3][j- 3]== flag&&
_ChessBoard[i+ 4][j- 4]== flag)
return 1;
}
for(int i= 1; i< N+ 1;++i)//棋盘有没有下满
{
for(int j=1; j< N+ 1;++j)
{
if(_ChessBoard[i][j]== ChessBoardflag)
return 0;//0表示棋盘没满
}
}
return-1;//和棋
}
bool GetVictory(Coordinate& pos, int player, int flag)//对JudgeVictory的一层封装,得到具体那个玩家获胜
{
int n= JudgeVictory(pos, flag);//判断有没有人获胜
if(n!= 0)//有人获胜,0表示没有人获胜
{
PrintChessBoard();
if(n== 1)//有玩家赢棋
{
if(player== 0)//0表示电脑获胜,1表示玩家1,2表示玩家2
printf("***电脑获胜***\n");
else
printf("***恭喜玩家%d获胜***\n", player);
}
else
printf("***双方和棋***\n");
return true;//已经有人获胜
}
return false;//没有人获胜
}
private:
char _ChessBoard[N+1][N+1];
};
扩展资料:设计思路
1、进行问题分析与设计,计划实现的功能为,开局选择人机或双人对战,确定之后比赛开始。
2、比赛结束后初始化棋盘,询问是否继续比赛或退出,后续可加入复盘、悔棋等功能。
3、整个过程中,涉及到了棋子和棋盘两种对象,同时要加上人机对弈时的AI对象,即涉及到三个对象。