本文中所使用的JControls、JFunction和ResourceData在前面的《学习HTML5开发RPG游戏》中都有提到,这里不再重述,详细情况,大家可以查看本文最后的源码。

1、初始化界面及游戏

var DJDDZ={};

DJDDZ.Init=function(canvasID){

JFunction.PreLoadData(GMain.URL).done(function () {

JMain.JForm=new JControls.Form(GMain.Size,canvasID).setBGImage(ResourceData.Images.bg1);

JMain.JForm.clearControls();

GMain.BtnPanel=new JControls.Object({x:100,y:280},{width:600,height:50});//用于显示游戏控制按钮

GMain.PokerPanel0=new GControls.PokerPanel({x:100,y:5},{width:600,height:120},0,0);//用于显示底牌,显示对象存储在GMain.Poker[0]

GMain.PokerPanel1=new GControls.PokerPanel({x:200,y:355},{width:400,height:120},1,20);//用于显示自己的牌,显示对象存储在GMain.Poker[1]

GMain.PokerPanel2=new GControls.PokerPanel({x:695,y:60},{width:100,height:440},2,25);//用于显示右边电脑的牌,显示对象存储在GMain.Poker[2]

GMain.PokerPanel3=new GControls.PokerPanel({x:5,y:60},{width:100,height:440},3,25);//用于显示左边电脑的牌,显示对象存储在GMain.Poker[3]

GMain.PokerPanel4=new GControls.PokerPanel({x:200,y:150},{width:400,height:120},4,20);//用于显示出的最后一手牌,显示对象存储在GMain.Poker[4]

var BeginButton=new JControls.Button({x:235,y:0},{width:130,height:50}).setText("开始").setBGImage(ResourceData.Images.btn);

BeginButton.onClick=function(){

GMain.BtnPanel.visible=false;

DJDDZ.Dealing();

}

GMain.BtnPanel.addControlInLast([BeginButton]);

JMain.JForm.addControlInLast([GMain.PokerPanel0,GMain.PokerPanel1

,GMain.PokerPanel2,GMain.PokerPanel3,GMain.PokerPanel4,GMain.BtnPanel]);

DJDDZ.InitGame();

JMain.JForm.show();

});

}

DJDDZ.InitGame=function(){

GMain.Poker=[];

for(var i=0;i<5;i++)GMain.Poker[i]=[];//初始化扑克对象存储空间

for(var j=0;j<54;j++)GMain.Poker[0][j]=new GControls.Poker(j+1);//生成扑克对象

GMain.PokerPanel0.hidePoker=true;//hidePoker为true,显示扑克背面

GMain.PokerPanel1.hidePoker=false;//hidePoker为false,显示扑克正面

GMain.PokerPanel2.hidePoker=true;

GMain.PokerPanel3.hidePoker=true;

GMain.PokerPanel4.hidePoker=false;

GMain.PokerPanel1.toSelectPoker=false;

GMain.PokerPanel0.density=1;//设置扑克牌显示密度

GMain.ToPlay=false;

GMain.LastHandPokerType=null;

GMain.DealingNum=0;

GMain.DealerNum=JFunction.Random(1,3);

GMain.BeginNum=GMain.DealerNum;//初始化发牌起始标识

}

2、点击开始按钮后开始发牌

DJDDZ.Dealing=function(){//发牌

if(GMain.DealingHandle)clearTimeout(GMain.DealingHandle);

if(GMain.DealingNum>=51) {//已发完牌

GMain.MaxScore=0;

GMain.GrabTime=0;

GMain.PokerPanel0.density=105;

DJDDZ.GrabTheLandlord();//抢地主

}else{

if(GMain.DealerNum>3) GMain.DealerNum=1;

var r=JFunction.Random(0,GMain.Poker[0].length-1);

GMain.Poker[GMain.DealerNum].splice(GMain.Poker[ GMain.DealerNum].length,0,GMain.Poker[0][r]);

GMain.Poker[0].splice(r,1);

GMain.DealingNum++;

GMain.DealerNum++;

GMain.DealingHandle=setTimeout(DJDDZ.Dealing, 40);//40毫秒发一张牌

JMain.JForm.show();

}

}

3、抢地主

DJDDZ.GrabTheLandlord=function(){//抢地主

if(GMain.GrabTime==3&&GMain.MaxScore==0){//没有人抢地主

DJDDZ.GameOver();

return;

}

if(GMain.MaxScore==3||(GMain.MaxScore>0&&GMain.GrabTime==3)){//地主已产生

GMain.DealerNum=GMain.LandlordNum;

GMain.LastHandNum=0;

GMain.PokerPanel0.hidePoker=false;

GMain.Poker[GMain.LandlordNum].splice(GMain.Poker[GMain.LandlordNum].length,0,GMain.Poker[0][2]);

GMain.Poker[GMain.LandlordNum].splice(GMain.Poker[GMain.LandlordNum].length,0,GMain.Poker[0][1]);

GMain.Poker[GMain.LandlordNum].splice(GMain.Poker[GMain.LandlordNum].length,0,GMain.Poker[0][0]);

GMain.ToPlay=true;

DJDDZ.ToPlay();

return;

}

if(GMain.DealerNum>3) GMain.DealerNum=1;

if(GMain.DealerNum==1){//自己抢地主

GMain.BtnPanel.clearControls();

var Button1=new GControls.GrabButton({x:10,y:0},{width:130,height:50},1).setText("1分").setBGImage(ResourceData.Images.btn);

var Button2=new GControls.GrabButton({x:160,y:0},{width:130,height:50},2).setText("2分").setBGImage(ResourceData.Images.btn);

var Button3=new GControls.GrabButton({x:310,y:0},{width:130,height:50},3).setText("3分").setBGImage(ResourceData.Images.btn);

var Button4=new GControls.GrabButton({x:460,y:0},{width:130,height:50}).setText("不抢").setBGImage(ResourceData.Images.btn);

GMain.BtnPanel.addControlInLast([Button1,Button2,Button3,Button4]);

GMain.BtnPanel.visible=true;

JMain.JForm.show();

}else{//电脑抢地主

var r=JFunction.Random(0,3);

if(r>GMain.MaxScore){

GMain.MaxScore=r;

GMain.LandlordNum=GMain.DealerNum;

}

GMain.DealerNum++;

GMain.GrabTime++;

JMain.JForm.show();

DJDDZ.GrabTheLandlord();

}

}

4、出牌

DJDDZ.ToPlay=function(){//出牌

JMain.JForm.show();

if(GMain.DealerNum>3) GMain.DealerNum=1;

if(GMain.LastHandNum==GMain.DealerNum){

GMain.LastHandNum=0;

}

if(GMain.DealerNum==1){//轮到自己出牌

GMain.BtnPanel.clearControls();

if(GMain.LastHandNum==2||GMain.LastHandNum==3){//不是该轮第一个出牌,可以选择不出牌

var Button1=new JControls.Button({x:50,y:0},{width:100,height:50},1).setText("不出").setBGImage(ResourceData.Images.btn);

Button1.onClick=function(){

for(var i=GMain.Poker[GMain.DealerNum].length-1;i>=0;i--)

GMain.Poker[GMain.DealerNum][i].isSelected=false;

GMain.DealerNum++;

GMain.BtnPanel.visible=false;

DJDDZ.ToPlay();

}

}

var Button2=new JControls.Button({x:250,y:0},{width:100,height:50}).setText("出牌").setBGImage(ResourceData.Images.btn);

Button2.onClick=function(){

var _pokerNumbers=[];

for(var i=GMain.Poker[GMain.DealerNum].length-1;i>=0;i--){

if(GMain.Poker[GMain.DealerNum][i].isSelected){

_pokerNumbers[_pokerNumbers.length]=GMain.Poker[GMain.DealerNum][i].pokerNumber;

}

}

if(DJDDZ.CheckPlayPoker(_pokerNumbers)){//判断选中的牌是否符合规则

DJDDZ.PlayPoker();//出选中的牌

GMain.BtnPanel.visible=false;

GMain.DealerNum++;

DJDDZ.ToPlay();//下一位出牌

}else{

alert("出牌不符合规则,请重新选择!");

}

}

var Button3=new JControls.Button({x:450,y:0},{width:100,height:50}).setText("提示").setBGImage(ResourceData.Images.btn);

Button3.onClick=function(){

DJDDZ.AISelectPoker();

JMain.JForm.show();

}

GMain.BtnPanel.addControlInLast([Button1,Button2,Button3]);

GMain.BtnPanel.visible=true;

GMain.PokerPanel1.toSelectPoker=true;

JMain.JForm.show();

}else{ //电脑出牌

if(DJDDZ.AISelectPoker()){//电脑AI选牌

DJDDZ.PlayPoker();//出选中的牌

}

GMain.DealerNum++;

setTimeout(DJDDZ.ToPlay, 1500);//暂停1500毫秒,下一位出牌

}

}

4.1、检查出牌是否符合规则

DJDDZ.CheckPlayPoker=function(_pokerNumbers){//检查出牌是否符合规则,pokerNumbers从小到大排序

var pokerType=DJDDZ.GetPokerType(_pokerNumbers);

if(pokerType==null)return false;//没有获取到牌型

if(GMain.LastHandNum==0)return true;//如果是该轮首牌,任何牌型都可以

else{

//与该轮出的最后一手牌比较

if(GMain.PokerTypes[pokerType.type].weight>GMain.PokerTypes[GMain.LastHandPokerType.type].weight)return true;//当前牌型可以压前一手牌型

else if (GMain.PokerTypes[pokerType.type].weight==GMain.PokerTypes[GMain.LastHandPokerType.type].weight){//当前牌型不可以压前一手牌型

if(pokerType.type==GMain.LastHandPokerType.type&&pokerType.length==GMain.LastHandPokerType.length){//牌型与出牌数都相同

if(pokerType.num>GMain.LastHandPokerType.num)return true;//数值大的压数值小的

else return false;

}else return false;

}else return false;

}

};

4.2、获取牌型

DJDDZ.GetPokerType=function(__pokerNumbers,chaiNum){//获取__pokerNumbers的牌型,__pokerNumbers已排序,从小到大

if(chaiNum==null)chaiNum=3;

var splitPoker=DJDDZ.SplitPoker(__pokerNumbers,chaiNum);//把牌拆成非组合类型

var pokerType={type:"",num:0,length:__pokerNumbers.length};

if(splitPoker["12"].length>0){

if(pokerType.length==2)pokerType.type="12";//王弹

else pokerType= null;

}else if(splitPoker["1111"].length>0){

if(splitPoker["1111"].length==1){

pokerType.num=splitPoker["1111"][0];

if(pokerType.length==4) pokerType.type="1111";//炸弹

else if(pokerType.length==6&&(splitPoker["1"].length==1||splitPoker["1"].length==2))pokerType.type="111123";//4带2

else if(pokerType.length==8&&splitPoker["11"].length==2)pokerType.type="11112233";//4带2对

else pokerType= null;

}else pokerType= null;

}else if(splitPoker["111"].length>0){

var l=splitPoker["111"].length;

if(l==1||DJDDZ.IsStraight(splitPoker["111"])){//l=1或GMain.SplitPoker["111"]的值连续

pokerType.num=splitPoker["111"][0];

if(pokerType.length==3*l)pokerType.type="111";//3条,l>=2时为飞机

else if(pokerType.length==4*l&&splitPoker["1"].length==l) pokerType.type="1112";//3条带1,l>=2时为飞机

else if(pokerType.length==5*l&&splitPoker["11"].length==l)pokerType.type="11122";//3条带1对,l>=2时为飞机

else pokerType= null;

}else pokerType= null;

}else if(splitPoker["11"].length>0){

var l=splitPoker["11"].length;

if(l==1|| (l>=3&&DJDDZ.IsStraight(splitPoker["11"]))){

pokerType.num=splitPoker["11"][0];

if(pokerType.length==2*l)pokerType.type="11";//l=1时为对子,l>=3时为连对

else pokerType= null;

}else pokerType= null;

}else if(splitPoker["1"].length>0){

var l=splitPoker["1"].length;

if(l==1||(l>=5&&DJDDZ.IsStraight(splitPoker["1"]))){

pokerType.num=splitPoker["1"][0];

pokerType.type="1";

}else pokerType= null;

} else pokerType=null;

if( pokerType==null&&chaiNum>0)pokerType=DJDDZ.GetPokerType(__pokerNumbers,chaiNum-1);

return pokerType;

}

4.3、出选中的牌

DJDDZ.PlayPoker=function(){//出选中的牌

GMain.Poker[4]=[];//清空出牌存储空间

var _pokerNumbers=[];

for(var i=GMain.Poker[GMain.DealerNum].length-1;i>=0;i--){

if(GMain.Poker[GMain.DealerNum][i].isSelected){

_pokerNumbers[_pokerNumbers.length]=GMain.Poker[GMain.DealerNum][i].pokerNumber;

GMain.Poker[4].splice(GMain.Poker[4].length,0,GMain.Poker[GMain.DealerNum][i]);

GMain.Poker[GMain.DealerNum].splice(i,1);

}

}

GMain.LastHandNum=GMain.DealerNum;//本轮最后一手牌标识

GMain.LastHandPokerType=DJDDZ.GetPokerType(_pokerNumbers);//设置最后一手牌牌型

if(GMain.Poker[GMain.DealerNum].length==0)DJDDZ.GameOver();//牌出完,游戏结束

}

4.4、电脑AI选牌

DJDDZ.AISelectPoker=function(){//AI选牌

var _pokerNumbers=[];

for(var i=GMain.Poker[GMain.DealerNum].length-1;i>=0;i--){

_pokerNumbers[_pokerNumbers.length]=GMain.Poker[GMain.DealerNum][i].pokerNumber;

}

var SPN=[];

if(DJDDZ.CheckPlayPoker(_pokerNumbers)){//如果只有一手牌,直接出完

SPN=_pokerNumbers;

}else{

if(GMain.LastHandNum==0){//本轮第一手牌

var splitPoker=DJDDZ.SplitPoker(_pokerNumbers);

if(splitPoker["111"].length>0){

//出3条或飞机,优先飞机

if(splitPoker["111"][0]<7||(splitPoker["1"].length==0&&splitPoker["11"].length==0)){

if(splitPoker["11"].length>0&&(splitPoker["11"][0]<7||splitPoker["1"].length==0)){

for(var i=GMain.PokerTypes["11122"].maxL;i>0;i--){

SPN=DJDDZ.GetPokerByType(_pokerNumbers,{type:"11122",num:0,length:5*i});

if(SPN.length>0)break;

}

}

if(SPN.length==0&&splitPoker["1"].length>0&&splitPoker["1"][0]<15){

for(var i=GMain.PokerTypes["1112"].maxL;i>0;i--){

SPN=DJDDZ.GetPokerByType(_pokerNumbers,{type:"1112",num:0,length:4*i});

if(SPN.length>0)break;

}

}

if(SPN.length==0){

for(var i=GMain.PokerTypes["111"].maxL;i>0;i--){

SPN=DJDDZ.GetPokerByType(_pokerNumbers,{type:"111",num:0,length:3*i});

if(SPN.length>0)break;

}

}

}

}

if(SPN.length==0){

var nn=[];

for(var x=1;x<=3;x++){

if(GMain.Poker[x].length==1||GMain.Poker[x].length==2){

if(GMain.DealerNum==GMain.LandlordNum){

if(GMain.DealerNum!=x)nn[GMain.Poker[x].length]=true;

}else{

if(GMain.LandlordNum==x)nn[GMain.Poker[x].length]=true;

}

}

}

if((splitPoker["11"].length>0&&splitPoker["1"].length>0&&(splitPoker["11"][0]0&&splitPoker["1"].length==0)){

//出连对

for(var i=GMain.PokerTypes["11"].maxL;i>2;i--){

SPN=DJDDZ.GetPokerByType(_pokerNumbers,{type:"11",num:0,length:2*i});

if(SPN.length>0)break;

}

if(SPN.length==0) SPN=DJDDZ.GetPokerByType(_pokerNumbers,{type:"11",num:0,length:2});//出对子

}else{

if(splitPoker["1"].length>0) SPN[SPN.length]=splitPoker["1"][0];//出单牌

}

}

if(SPN.length==0)SPN=DJDDZ.GetPokerByType(_pokerNumbers,{type:"1111",num:0,length:4});//出炸弹

if(SPN.length==0)SPN=DJDDZ.GetPokerByType(_pokerNumbers,{type:"12",num:0,length:2});//出王炸

}else{

if(GMain.LastHandPokerType.type!="12"){

if(GMain.LandlordNum==GMain.DealerNum||GMain.LastHandNum==GMain.LandlordNum){//如果AI是地主或接地主的牌

SPN=DJDDZ.GetPokerByType(_pokerNumbers,GMain.LastHandPokerType);

if(SPN.length==0&&GMain.LastHandPokerType.type!="1111")SPN=DJDDZ.GetPokerByType(_pokerNumbers,{type:"1111",num:0,length:4});

if(SPN.length==0)SPN=DJDDZ.GetPokerByType(_pokerNumbers,{type:"12",num:0,length:2});

}else{//接同伴的牌

if(GMain.Poker[GMain.LastHandNum].length>5){

if((GMain.LastHandPokerType.type=="1"&&GMain.LastHandPokerType.length==1)

||(GMain.LastHandPokerType.type=="11"&&GMain.LastHandPokerType.length==2)){

SPN=DJDDZ.GetPokerByType(_pokerNumbers,GMain.LastHandPokerType);

if(SPN.length>0&&SPN[0]>10)SPN=[];

}

}

}

}

}

}

if(SPN.length>0){

for(var i=0;i=0;j--){

if(!GMain.Poker[GMain.DealerNum][j].isSelected&&GMain.Poker[GMain.DealerNum][j].pokerNumber==SPN[i]){

GMain.Poker[GMain.DealerNum][j].isSelected=true;//选牌

break;

}

}

}

return true;

}else return false

}

4.5、获取指定牌型的牌

DJDDZ.GetPokerByType=function(__pokerNumbers,type){//从__pokerNumbers中获取type类型的牌

var _pokerNumbers=[];

var SPN=[];

if(__pokerNumbers.length>=type.length){

for(var i=0;itype.num&&_pokerNumbers[j]==_pokerNumbers[j-c]){

if(SPN.length>0){

if(_pokerNumbers[j]==SPN[0])break;

else if(_pokerNumbers[j]>SPN[0]+1)SPN=[];//如果不能连续则清空已选数

}

for(var k=j;k>=j-c;k--) {

SPN.splice(0,0,_pokerNumbers[k]);//选取数值

_pokerNumbers.splice(j,1);//删除数值

}

if(SPN.length==type.length)break;//选取完成

}

if(SPN.length==type.length)break;

}

}else if(type.type=="1112"||type.type=="11122"||type.type=="111123"||type.type=="11112233"){//组合类型

var zcy=GMain.PokerTypes[type.type].zcy;

var fcy=GMain.PokerTypes[type.type].fcy;

var fcyNum=GMain.PokerTypes[type.type].fcyNum;

var l=type.length/GMain.PokerTypes[type.type].allNum;

SPN=DJDDZ.GetPokerByType(_pokerNumbers,{type:zcy,num:type.num,length:l*GMain.PokerTypes[zcy].allNum});//先选主类型

if(SPN.length>0){

for(var i=0;i0){

var spn1=DJDDZ.GetPokerByType(_pokerNumbers,{type:fcy,num:0,length:GMain.PokerTypes[fcy].allNum});

for(var i=0;i

5、游戏结束

当某个人出完牌或没有人抢地主时游戏结束。

DJDDZ.GameOver=function(){

GMain.BtnPanel.clearControls();

var Button=new JControls.Button({x:235,y:0},{width:130,height:50}).setText("重新开始").setBGImage(ResourceData.Images.btn);

Button.onClick=function(){

DJDDZ.InitGame();

GMain.BtnPanel.visible=false;

DJDDZ.Dealing();

}

GMain.BtnPanel.addControlInLast([Button]);//加载重新开始按钮

//翻开低牌和左右电脑的牌

GMain.PokerPanel0.hidePoker=false;

GMain.PokerPanel2.hidePoker=false;

GMain.PokerPanel3.hidePoker=false;

GMain.BtnPanel.visible=true;

JMain.JForm.show();

}

演示地址 源码地址

网页版 html5 斗地主,HTML5版单机斗地主相关推荐

  1. android单机斗地主,单机斗地主最新安卓版

    单机斗地主最新安卓版是一款操作流畅的经典单机斗地主类游戏,妈妈再也不用担心我因为金币不够不能玩斗地主了,本作为大家提供了无限金币,让你畅玩一整天都不用担心.游戏中有各种的赛事哦,随时可参与,根据你的状 ...

  2. html5动画怎么做成gif,一种网页版的调用html5视频录制动画GIF图像的方法与流程...

    本发明涉及WEB开发与应用技术领域,特别涉及一种网页版的调用html5视频录制动画GIF图像的方法. 背景技术: GIF 格式指的是图像交换格式(Graphics Interchange Format ...

  3. (第45册)HTML5网页游戏设计从基础到开发(第2版·微课视频版)

    HTML5是W3C组织近年来发布的一项引起业内轰动的Web新标准.它几乎颠覆现有Web应用, HTML5从根本上改变了开发商开发web应用的方式,从桌面浏览器到移动应用,这种语言和标准都正在影响将继续 ...

  4. html网页特效微课,网页设计与制作(HTML5+CSS3+JavaScript)(第4版)(微课版)

    网页设计与制作(HTML5+CSS3+JavaScript)(第4版)(微课版) 编辑 锁定 讨论 上传视频 <网页设计与制作(HTML5+CSS3+JavaScript)(第4版)(微课版)& ...

  5. 微信html5尺寸,【h5网站网页】H5设计原稿的切图是什么尺寸的,是微信公众号版的?主流HTML5移动网络开发框架?...

    [h5网站网页]H5设计原稿的切图是什么尺寸的,是微信公众号版的?主流HTML5移动网络开发框架?下面就和小编一起来看看吧! H5设计原稿的切图是什么尺寸的,是微信公众号版的? 前沿的Photosho ...

  6. python实现单机斗地主手机版下载_单机斗地主(单机版)无需网络下载

    单机斗地主(单机版)无需网络下载他想安安稳稳的生活,但命运却常常和他作对. 官方介绍 玩家作为主公的身份,将会获得一众英雄好汉或美人武将,获得的武将人物可以进行养成升级,助您一举称霸天下; 游戏特色 ...

  7. 微博html5版什么手机,搜狐微博推出全新手机HTML5触屏版

    近日,搜狐微博全力推出手机微博触屏版(w.sohu.com/m),该版采用最新HTML5技术,全新的视觉设计,让你在网页上享受超越客户端的用户体验. HTML5是一种技术标准,被业界视为未来移动应用的 ...

  8. 搜狐html5,搜狐微博推出全新手机HTML5触屏版

    近日,搜狐微博全力推出手机微博触屏版(w.sohu.com/m),该版采用最新HTML5技术,全新的视觉设计,让你在网页上享受超越客户端的用户体验. HTML5是一种技术标准,被业界视为未来移动应用的 ...

  9. starcraft2 html 资源,最新HTML5版星际争霸完全版源码

    压缩包内容概览: 最新HTML5版星际争霸完全版源码-StarCraft-master ; 人物 ; 控制器 ; 小图标 ; 游戏规则 ; 图片 ; 索引 ; 许可证 ; 自述文件 ; 仲裁者.攻击 ...

  10. html5 canvas简易版捕鱼达人游戏源码

    插件描述:html5利用canvas写的一个js版本的捕鱼,有积分统计,鱼可以全方位移动,炮会跟着鼠标移动,第一次打开需要鼠标移出背景图,再移入的时候就可以控制炮的转动,因为是用的mouseover触 ...

最新文章

  1. 雷军深情告白:在我心里,武汉大学是全球最好的大学
  2. 3704对象关闭时_JVM 通过逃逸分析就能让对象在栈上分配?没那么简单!
  3. 操作系统实验报告11:ucore Lab 2
  4. SAP CRM BSP UI gif and color handling
  5. 数据结构与算法的实现 —— 结点定义与数据结构的选择
  6. 理解频域、时域、FFT和加窗 加深对信号的认识
  7. 指纹识别-传感器原理
  8. matlab自动打卡程序,MATLAB人脸考勤打卡签到系统[摄像头界面GUI]
  9. Java写的小游戏贪吃蛇代码
  10. wifi 联想小新_WiFi 6锐龙5一个都不能少 小新Pro 13详细配置曝光
  11. 达州中学高考2021成绩查询,2020达州高考成绩揭晓,恭喜恭喜!另附成绩统计表...
  12. 怎么区分css还是html5,一文读懂HTML5和HTML4区别!
  13. Android Studio build失败情况解决方案
  14. Android安装busybox
  15. Swift —— 类与结构体
  16. Tomcat中CATALINA_HOME和CATALINA_BASE的区别
  17. cygwin的坑坑洼洼
  18. Google 百度 图标收藏(三)
  19. 7月16日安卓混服服务器升级维护公告,7月29日更新维护新服开启公告
  20. linux查看用户家目录下的隐藏文件,linux中查看目录下隐藏文件方式?

热门文章

  1. oracle 数据库er生成,oracle数据库生成er图
  2. 麦克风阵列的同步性、一致性、峰值幅度、RMS、DC偏移
  3. IOS平台下的音视频即时通讯
  4. l298n电机哪一端为正_L298N电机驱动模块原理
  5. bzoj2525 1426
  6. allegro设置规则
  7. 数据结构课程设计- (二) 栈与队列(迷宫问题)
  8. MFC框架学习:《深入浅出MFC》阅读笔记
  9. 计算机蓝屏代码0x0000007A,电脑开机蓝屏代码0x0000007a怎么办
  10. Android应用文本字体设置