国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

網(wǎng)站轉(zhuǎn)化分析百度優(yōu)化怎么做

網(wǎng)站轉(zhuǎn)化分析,百度優(yōu)化怎么做,那個(gè)網(wǎng)站可以網(wǎng)上兼職做設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì)策劃案怎么寫(xiě)🌟 嗨,我是LucianaiB! 🌍 總有人間一兩風(fēng),填我十萬(wàn)八千夢(mèng)。 🚀 路漫漫其修遠(yuǎn)兮,吾將上下而求索。 ? C語(yǔ)言之斗地主游戲 目錄 程序概述程序設(shè)計(jì) Card類CardGroup類Player類LastCards類Land…


🌟 嗨,我是LucianaiB!

🌍 總有人間一兩風(fēng),填我十萬(wàn)八千夢(mèng)。

🚀 路漫漫其修遠(yuǎn)兮,吾將上下而求索。


?

C語(yǔ)言之斗地主游戲

目錄

  1. 程序概述
  2. 程序設(shè)計(jì)
    1. Card類
    2. CardGroup類
    3. Player類
    4. LastCards類
    5. Landlords類
  3. 游戲流程
  4. 特點(diǎn)與功能
    1. 牌型判斷
    2. AI提示
    3. 交互性
    4. 隨機(jī)性
  5. 測(cè)試與運(yùn)行
  6. 總體評(píng)價(jià)
  7. 附錄代碼

本文介紹了一個(gè)基于C++實(shí)現(xiàn)的簡(jiǎn)單斗地主游戲程序。該程序模擬了斗地主的基本規(guī)則和流程,包括發(fā)牌、搶地主、出牌以及勝負(fù)判定等功能。程序的核心由多個(gè)類組成,包括Card(表示單張牌)、CardGroup(表示一組牌)、Player(表示玩家)、LastCards(用于記錄上家出的牌)和Landlords(用于管理整個(gè)游戲流程)。

程序設(shè)計(jì)

程序通過(guò)Card類定義了牌的基本屬性,如牌面值、花色和顯示方法。CardGroup類用于管理一組牌,并提供牌型判斷和大小比較的功能。Player類則管理玩家手中的牌,并提供出牌和提示功能。LastCards類用于記錄上家出的牌,并提供查找可打得過(guò)的牌的功能。Landlords類作為游戲的核心,負(fù)責(zé)初始化游戲、發(fā)牌、搶地主、輪流出牌以及判斷游戲結(jié)束等邏輯。

游戲流程

游戲開(kāi)始時(shí),程序通過(guò)洗牌和分牌將54張牌隨機(jī)分配給三個(gè)玩家,并通過(guò)搶地主環(huán)節(jié)確定地主玩家。地主玩家獲得額外的三張底牌后,游戲正式開(kāi)始。玩家按順序出牌,每次出牌需要比上家的牌大,或者選擇不出。當(dāng)某個(gè)玩家手中的牌全部出完時(shí),游戲結(jié)束,程序會(huì)判斷地主是否獲勝。

特點(diǎn)與功能
  1. 牌型判斷:程序能夠準(zhǔn)確判斷牌型,如單牌、對(duì)子、三帶一、炸彈等,并根據(jù)牌型和牌的大小進(jìn)行比較。
  2. AI提示:非地主玩家在出牌時(shí),程序會(huì)自動(dòng)提示可打得過(guò)的牌,提高了游戲的流暢性。
  3. 交互性:程序通過(guò)控制臺(tái)輸入輸出與用戶交互,用戶可以選擇是否搶地主、出牌以及是否繼續(xù)游戲。
  4. 隨機(jī)性:通過(guò)隨機(jī)洗牌和搶地主環(huán)節(jié),增加了游戲的趣味性和不確定性。
測(cè)試與運(yùn)行

程序在測(cè)試中表現(xiàn)出了良好的穩(wěn)定性和正確性。玩家可以自由選擇出牌策略,程序會(huì)根據(jù)規(guī)則判斷出牌是否合法,并在游戲結(jié)束后輸出勝負(fù)結(jié)果。用戶可以通過(guò)簡(jiǎn)單的命令行交互體驗(yàn)完整的斗地主游戲流程。
在這里插入圖片描述

總體評(píng)價(jià)

本文介紹了一個(gè)基于C++實(shí)現(xiàn)的斗地主游戲程序,模擬了斗地主的基本規(guī)則和流程,包括發(fā)牌、搶地主、出牌和勝負(fù)判定等功能。程序的核心由多個(gè)類組成,如Card、CardGroup、Player、LastCards和Landlords,通過(guò)面向?qū)ο缶幊痰姆绞綄?shí)現(xiàn)了游戲的完整邏輯。

在程序設(shè)計(jì)中,Card類用于定義單張牌的基本屬性,如牌面值、花色和顯示方法。CardGroup類管理一組牌,并提供牌型判斷和大小比較的功能。Player類管理玩家手中的牌,并提供出牌和提示功能。LastCards類用于記錄上家出的牌,并提供查找可打得過(guò)的牌的功能。Landlords類作為游戲的核心,負(fù)責(zé)初始化游戲、發(fā)牌、搶地主、輪流出牌以及判斷游戲結(jié)束等邏輯。

游戲流程從洗牌和分牌開(kāi)始,通過(guò)搶地主環(huán)節(jié)確定地主玩家。地主獲得額外三張底牌后,游戲正式開(kāi)始。玩家按順序出牌,每次出牌需要比上家的牌大,或者選擇不出。當(dāng)某個(gè)玩家手中的牌全部出完時(shí),游戲結(jié)束,程序會(huì)判斷地主是否獲勝。
該程序具有以下特點(diǎn):

牌型判斷:能夠準(zhǔn)確判斷牌型,如單牌、對(duì)子、三帶一、炸彈等,并根據(jù)牌型和牌的大小進(jìn)行比較。

AI提示:非地主玩家在出牌時(shí),程序會(huì)自動(dòng)提示可打得過(guò)的牌,提高了游戲的流暢性。

交互性:通過(guò)控制臺(tái)輸入輸出與用戶交互,用戶可以選擇是否搶地主、出牌以及是否繼續(xù)游戲。

隨機(jī)性:通過(guò)隨機(jī)洗牌和搶地主環(huán)節(jié),增加了游戲的趣味性和不確定性。

在測(cè)試中,程序表現(xiàn)出良好的穩(wěn)定性和正確性,用戶可以通過(guò)簡(jiǎn)單的命令行交互體驗(yàn)完整的斗地主游戲流程。該程序不僅實(shí)現(xiàn)了斗地主的基本規(guī)則,還通過(guò)類的設(shè)計(jì)和封裝展示了面向?qū)ο缶幊痰乃枷搿4a結(jié)構(gòu)清晰,易于理解和擴(kuò)展,適合用于學(xué)習(xí)和研究C++編程以及游戲開(kāi)發(fā)。

附錄代碼:
#include <iostream>
#include<vector>
#include<assert.h>
#include<string>
#include<stdio.h>
#include<algorithm>
#include<time.h>using namespace std;#define PLAYERCOUNT 3
#define CARDSCOUNT 54
#define CURRENTPLAYER 0
#define VALUECOUNT 17
#define ERROR -1
using namespace std;
int scnt=0;
const char toFigure[]="34567890JQKA 2YZ";enum COLOR{  //花色顯示ASCII: 3~6
eHEART=3,//紅桃
eDIAMOND=4,//方片
eCLUB=5,   //草花
eSPADE=6   //黑桃
};class Card;
class CardsType;
class CardGroup;
class Player;
class Landlords;
class LastCards;
bool makeChoice(string tip);
bool cmp(Card* a,Card* b);
class Card{
public:
char figure;
COLOR color;
int value;
Card(char _figure,COLOR _color){figure=_figure;color=_color;value=calValue();
}
int calValue(){for(int i=0;toFigure[i];i++){if(toFigure[i]==figure){return i;}}return ERROR;
}void print() {assert(value != ERROR);switch (color) {case eHEART:cout << "?"; // 紅桃break;case eDIAMOND:cout << "?"; // 方片break;case eCLUB:cout << "?"; // 草花break;case eSPADE:cout << "?"; // 黑桃break;default:cout << "?"; // 未知花色break;}cout << figure << ' ';}
};
class CardsType{
public:
//為了規(guī)范查找對(duì)應(yīng)牌的方法
//統(tǒng)一為3個(gè)參數(shù)cnt1、isContinuous、cnt2
int typeId;
string typeStr;
int cnt1,cnt2;
bool isContinuous;
CardsType(){typeId=ERROR;
}
bool operator ==(const CardsType& other)const{return this->typeId==other.typeId;
}
void init(char* _typeStr,int _typeId,int _cnt1,bool _isContinuous,int _cnt2){cnt1=_cnt1;isContinuous=_isContinuous;cnt2=_cnt2;typeStr=_typeStr;typeId=_typeId;
}
};
class CardGroup{
public:
vector<Card*> cards;
CardsType type;
void calType(){int i,n=cards.size();//init(typeStr,typeId,cnt1,isContinuous,cnt2)if(n==0){type.init("不出",14,0,0,0);return;}if(n==2&&cards[0]->value==15&&cards[1]->value==14){type.init("王炸",0,0,0,0);return;}//統(tǒng)計(jì)同點(diǎn)數(shù)牌有多少?gòu)?/span>int cntFlag[VALUECOUNT]={0};for(i=0;i<n;i++){cntFlag[cards[i]->value]++;}//統(tǒng)計(jì)點(diǎn)數(shù)最多和最少的牌int maxCnt=0,minCnt=4;for(i=0;i<VALUECOUNT;i++){if(maxCnt<cntFlag[i]){maxCnt=cntFlag[i];}if(cntFlag[i]&&minCnt>cntFlag[i]){minCnt=cntFlag[i];}}if(n==4&&maxCnt==4){type.init("炸彈",1,4,0,0);return;}if(n==1){type.init("單牌",2,1,0,0);return;}if(n==2&&maxCnt==2){type.init("對(duì)子",3,2,0,0);return;}if(n==3&&maxCnt==3){type.init("三張 ",4,3,0,0);return;}if(n==4&&maxCnt==3){type.init("三帶一",5,3,0,1);return;}if(n==5&&maxCnt==3&&minCnt==2){type.init("三帶一對(duì)",6,3,0,2);return;}if(n==6&&maxCnt==4){type.init("四帶二",7,4,0,1);return;}if(n==8&&maxCnt==4&&minCnt==2){type.init("四帶二",8,4,0,2);return;}if(n>=5&&maxCnt==1&&cards[0]->value==cards[n-1]->value+n-1){type.init("順子",9,1,1,0);return;}if(n>=6&&maxCnt==2&&minCnt==2&&cards[0]->value==cards[n-1]->value+n/2-1){type.init("連對(duì)",10,2,1,0);return;}int fjCnt;//統(tǒng)計(jì)連續(xù)且大于3三張的牌for(i=0;i<VALUECOUNT &&cntFlag[i]<3;i++);for(fjCnt=0;i<VALUECOUNT &&cntFlag[i]>=3;i++,fjCnt++);if(fjCnt>1){if(n==fjCnt*3)type.init("飛機(jī)",11,3,1,0);else if(n==fjCnt*4)type.init("飛機(jī)",12,3,1,1);else if(n==fjCnt*5&&minCnt==2)type.init("飛機(jī)",13,3,1,2);}
}
void init(string inputStr, vector<Card*> &cardsHolded){this->cards.clear();//不出if(inputStr=="N"){this->calType();return;}int i,j;//輸入合法性判斷for(i=0;i<inputStr.size();i++){bool find=false;for(j=0;toFigure[j];j++){if(inputStr[i]==toFigure[j]){find=true;break;}}if(find==false){//輸入字符不在toFigure中return;}}//查找手中有沒(méi)有這些牌int visitFlag[20]={0};for(i=0;i<inputStr.size();i++){Card *find=NULL;for(j=0;j<cardsHolded.size();j++){if(!visitFlag[j]&&cardsHolded[j]->figure==inputStr[i]){visitFlag[j]=1;find=cardsHolded[j];break;}}if(find){this->cards.push_back(find);}else{cout<<inputStr[i];cout<<"沒(méi)有找到\t";this->cards.clear();return;}}//end for(i=0;i<inputStr.size();i++)this->arrange();
}
void init(vector<Card*> newCards){this->cards=newCards;this->arrange();
}
bool isCanBeat(CardGroup &cardGroup){if(cardGroup.type.typeStr=="王炸"){return false;}else if(this->type.typeStr=="王炸"){return true;}else if(cardGroup.type==this->type &&this->type.typeStr=="炸彈"){return value()>cardGroup.value();}else if(cardGroup.type.typeStr=="炸彈"){return false;}else if(this->type.typeStr=="炸彈"){return true;}else if(cardGroup.type==this->type &&this->cards.size()==cardGroup.cards.size()){return this->value()>cardGroup.value();}else{return false;}
}
int value(){//計(jì)算牌組權(quán)值int i;if(type.typeStr=="三帶一"||type.typeStr=="三帶一對(duì)"||type.typeStr=="飛機(jī)"){for(i=2;i<cards.size();i++){if(cards[i]->value==cards[i-2]->value){return cards[i]->value;}}}if(type.typeStr=="四帶二"){for(i=3;i<cards.size();i++){if(cards[i]->value==cards[i-3]->value){return cards[i]->value;}}}return cards[0]->value;
}
void arrange(){//整理:排序、計(jì)算類型// sort(this->cards.begin(),this->cards.end(),cmp);this->calType();
}
};
class LastCards{
static LastCards *lastCards;
public:
Player *player;
CardGroup cardGroup;
static LastCards* inst(){//單例模式if(lastCards==NULL){lastCards=new LastCards();}return lastCards;
}
vector<Card*> findCanBeatFrom(vector<Card*> &cardsHolded){//查找能打得過(guò)的牌int i,j,k,n=cardsHolded.size(),m=cardGroup.cards.size();string typeStr=cardGroup.type.typeStr;vector<Card*> ret;if(typeStr=="王炸"||n<m){//打不過(guò),返回空數(shù)組return ret;}int value=cardGroup.value();//統(tǒng)計(jì)各點(diǎn)牌出現(xiàn)的次數(shù)int cntFlag[VALUECOUNT]={0};for(i=0;i<n;i++){cntFlag[cardsHolded[i]->value]++;}int continuousCount=1;if(cardGroup.type.isContinuous){continuousCount=m/(cardGroup.type.cnt1+cardGroup.type.cnt2);}bool findFirstFigure;//cout<<"continuousCount="<<continuousCount<<endl;for(i=value+1;i<VALUECOUNT;i++){findFirstFigure=true;for(j=0;j<continuousCount;j++){if(cntFlag[i-j]<cardGroup.type.cnt1){findFirstFigure=false;break;}}if(findFirstFigure){ret.clear();int firstFigure=i;//cout<<"查找"<<cardGroup.type.cnt1<<"個(gè)"<<firstFigure+3<<endl;for(k=0,j=0;k<cardsHolded.size() &&j<continuousCount;k++){if(cardsHolded[k]->value==firstFigure-j){for(int kk=0;j>=0&&kk<cardGroup.type.cnt1;kk++){ret.push_back(cardsHolded[k+kk]);}j++;}}if(cardGroup.type.cnt2>0){int SecondFigures[5];int SecondCount=continuousCount;if(cardGroup.type.typeStr=="四帶二")SecondCount=2;bool findSecondFigure=true;for(j=0,k=-1;j<SecondCount &&findSecondFigure;j++){findSecondFigure=false;for(k++;k<VALUECOUNT;k++){SecondFigures[j]=k;if(cntFlag[k]>=cardGroup.type.cnt2 &&cntFlag[k]<cardGroup.type.cnt1){findSecondFigure=true;break;}}}if(findSecondFigure){//cout<<"查找SecondFigure "<<cardGroup.type.cnt2<<"個(gè)"<<SecondFigures[0]+3<<endl;//cout<<"SecondCount= "<<SecondCount<<endl;//for(i=0;i<SecondCount;i++)cout<<"SecondFigures["<<i<<"]="<<SecondFigures[i]<<endl;for(i=0;i<SecondCount;i++){for(j=0;j<cardsHolded.size();){if(cardsHolded[j]->value==SecondFigures[i]){for(k=0;k<cardGroup.type.cnt2;k++){//cout<<"添加"<<cardsHolded[j]->value+3<<endl;ret.push_back(cardsHolded[j+k]);}do{j++;}while(j<cardsHolded.size()&&cardsHolded[j]->value==SecondFigures[i]);}else{j++;}}}return ret;}//if(findSecondFigure)}//end if(cardGroup.type.cnt2>0)else{return ret;}}//end if(findFirstFigure)}//end for(i=value+1;i<VALUECOUNT;i++)ret.clear();//沒(méi)牌打得過(guò)時(shí)查找有沒(méi)有炸彈if(typeStr!="炸彈"){for(i=cardsHolded.size()-1;i>=3;i--){if(cardsHolded[i]->value==cardsHolded[i-3]->value){for(j=0;j<4;j++){ret.push_back(cardsHolded[i-j]);}break;}}}return ret;
}//end vector<Card*> findCanBeatFrom()
};
LastCards* LastCards::lastCards = NULL;
class Player{
public:
string name;
vector<Card*> cards;
void arrange(){sort(cards.begin(),cards.end(),cmp);
}
void print(){cout<<this->name<<":\t";for(int i=0;i<cards.size();i++){cards[i]->print();}cout<<"["<<cards.size()<<"]\n";
}
vector<Card*> tip(){//提示功能,使自己最小一張連最長(zhǎng)CardGroup ret;string temp;int j,k,m=cards.size();for(j=0;j<m;j++){temp="";for(k=j;k<m;k++){temp+=cards[k]->figure;}ret.init(temp,cards);if(ret.type.typeId!=ERROR){return ret.cards;}}ret.cards.clear();return ret.cards;
}
void chupai(CardGroup &cardGroup){//出牌cout<<this->name<<":\t";cout<<cardGroup.type.typeStr<<' ';for(int i=0;i<cardGroup.cards.size();i++){cardGroup.cards[i]->print();this->cards.erase(find(this->cards.begin(),this->cards.end(),cardGroup.cards[i]));}cout<<"\t["<<this->cards.size()<<"]\n";if(cardGroup.type.typeStr!="不出"){//記錄到 LastCards 中LastCards::inst()->player=this;LastCards::inst()->cardGroup.init(cardGroup.cards);}
}
};
class Landlords{
Player *player[PLAYERCOUNT];
bool finished,youWin,landlordWin;
int landlordIndex;
Card *cards[CARDSCOUNT];
public:
Landlords(){int i=0,j=0,k=0;for(i=0;i<PLAYERCOUNT;i++){this->player[i]=new Player();}//54張牌初始化for(k=i=0;i<14;i++){if(toFigure[i]==' '){continue;}for(COLOR color=eHEART;color<=eSPADE;color=(COLOR)(color+1)){this->cards[k++]=new Card(toFigure[i],color);}}this->cards[k++]=new Card('Y',eSPADE);this->cards[k]=new Card('Z',eHEART);
}
~Landlords(){for(int i=0;i<PLAYERCOUNT;i++){delete this->player[i];}for(int i1=0;i1<CARDSCOUNT;i1++){delete this->cards[i1];}
}
void init(){player[CURRENTPLAYER]->name="Bice";player[1]->name="玩家2";player[2]->name="玩家3";finished=false;youWin=false;landlordWin=false;//搶地主landlordIndex=ERROR;while(landlordIndex==ERROR){srand((int)time(0));shuffle();landlordIndex=chooseLandlord();}cout<<player[landlordIndex]->name<<"\t成為地主\n\n";this->add3Cards();LastCards::inst()->player=player[landlordIndex];
}
void startGame(){string inputSrt;CardGroup inputCards;for(int iTurns=landlordIndex;!finished;iTurns++){if(iTurns>=PLAYERCOUNT){iTurns=0;}if(iTurns==CURRENTPLAYER){cout<<endl;player[iTurns]->print();cout<<"輸入提示:Z=大王 Y=小王 0=10 N=不要 輸入可無(wú)序 例如:JKQ0A9\n請(qǐng)出牌:\t";do{cin>>inputSrt;inputCards.init(inputSrt,player[iTurns]->cards);}while(check(&inputCards)==false);}else{if(player[iTurns]==LastCards::inst()->player){//若是上次出牌的是自己,啟用提示功能inputCards.init(player[iTurns]->tip());}else{//查找能打得過(guò)上家的牌inputCards.init(LastCards::inst()->findCanBeatFrom(player[iTurns]->cards));}}player[iTurns]->chupai(inputCards);//出牌if(player[iTurns]->cards.size()==0){//玩家手中沒(méi)牌了,游戲結(jié)束finished=true;landlordWin=iTurns==landlordIndex;if(landlordWin){youWin=landlordIndex==CURRENTPLAYER;}else{youWin=landlordIndex!=CURRENTPLAYER;}}}cout<<"\n_________________________ "<<(youWin?"You Win!":"You Lose!")<<" _________________________\n\n";
}
void add3Cards(){cout<<"地主3張牌:\t";for(int i=PLAYERCOUNT*17;i<CARDSCOUNT;i++){this->cards[i]->print();player[landlordIndex]->cards.push_back(cards[i]);}cout<<endl;player[landlordIndex]->arrange();
}
int chooseLandlord(){cout<<"\n_________________________ 搶地主 _________________________\n\n";int first=-1,last,cnt=0,i,j=rand()%PLAYERCOUNT;bool decision;for(i=0;i<PLAYERCOUNT;i++,j==2?j=0:j++){if(j==CURRENTPLAYER){decision=makeChoice("是否搶地主?(Y=搶/N=不搶):");}else{decision=rand()%2;}if(decision){cnt++;last=j;if(first==-1){first=j;}cout<<this->player[j]->name<<"\t搶地主\n";}else{cout<<this->player[j]->name<<"\t沒(méi)有搶\n";}}if(cnt==0){cout<<"沒(méi)人搶,重新發(fā)牌\n";return ERROR;}if(cnt==1){//第一輪只有一人搶地主return first;}else{//最后一次爭(zhēng)搶if(first==CURRENTPLAYER){decision=makeChoice("是否搶地主?(Y=搶/N=不搶):");}else{decision=rand()%2;}if(decision){cout<<this->player[first]->name<<"\t搶地主\n";return first;}else{cout<<this->player[first]->name<<"\t沒(méi)有搶\n";return last;}}
}
void shuffle(){int i,j,k;//洗牌for(i=0;i<CARDSCOUNT;i++){swap(this->cards[i],this->cards[rand()%CARDSCOUNT]);}//分牌for(k=i=0;i<PLAYERCOUNT;i++){this->player[i]->cards.clear();for(j=0;j<17;j++){this->player[i]->cards.push_back(this->cards[k++]);}this->player[i]->arrange();//整理this->player[i]->print();}
}
bool check(CardGroup *cardGroup){if(cardGroup->type.typeId==ERROR){cout<<"出牌錯(cuò)誤,重新輸入\n";return false;}else if(cardGroup->type.typeStr=="不出"){return true;}else if(LastCards::inst()->player!=player[CURRENTPLAYER]&&!cardGroup->isCanBeat(LastCards::inst()->cardGroup)){cout<<"打不過(guò),重新輸入\n";return false;}else{return true;}
}
};
int main(){
Landlords *landlords=new Landlords();
do{landlords->init();//發(fā)牌、搶地主landlords->startGame();//游戲開(kāi)始
}while(makeChoice("\n是否繼續(xù)游戲?(Y=繼續(xù)/N=結(jié)束): "));
delete landlords;
return 0;
}
bool makeChoice(string tip){
cout<<tip;
string input;
cin>>input;
return input=="Y"||input=="y";
}
bool cmp(Card* a,Card* b){
if(a->value==b->value){return a->color>b->color;
}else{return a->value>b->value;
}
}

嗨,我是[LucianaiB](https://lucianaib.blog.csdn.net/ “LucianaiB”)。如果你覺(jué)得我的分享有價(jià)值,不妨通過(guò)以下方式表達(dá)你的支持:👍 點(diǎn)贊來(lái)表達(dá)你的喜愛(ài),📁 關(guān)注以獲取我的最新消息,💬 評(píng)論與我交流你的見(jiàn)解。我會(huì)繼續(xù)努力,為你帶來(lái)更多精彩和實(shí)用的內(nèi)容。

點(diǎn)擊這里👉[LucianaiB](https://lucianaib.blog.csdn.net/ “LucianaiB”) ,獲取最新動(dòng)態(tài),?? 讓信息傳遞更加迅速。

http://m.aloenet.com.cn/news/42317.html

相關(guān)文章:

  • 大連市建委官方網(wǎng)站推廣一般收多少錢
  • java python 做網(wǎng)站武漢seo認(rèn)可搜點(diǎn)網(wǎng)絡(luò)
  • 北京營(yíng)銷型網(wǎng)站建設(shè)價(jià)格西安百度推廣運(yùn)營(yíng)公司
  • 色母粒對(duì)網(wǎng)站的建議和優(yōu)化
  • 西安未央?yún)^(qū)網(wǎng)站建設(shè)微博推廣效果怎么樣
  • 網(wǎng)站admin密碼西安seo外包
  • 網(wǎng)站收錄是怎么回事免費(fèi)網(wǎng)絡(luò)推廣網(wǎng)址
  • 中山網(wǎng)站推廣服務(wù)提高seo關(guān)鍵詞排名
  • 怎么自己用手機(jī)做網(wǎng)站門(mén)戶網(wǎng)站軟文
  • 做個(gè)類似淘寶的網(wǎng)站怎么做搜索引擎推廣的方法有哪些
  • 網(wǎng)站360自然排名要怎么做百度手機(jī)版
  • 廣州番禺網(wǎng)站建設(shè)工作室網(wǎng)站搭建
  • 網(wǎng)絡(luò)集資網(wǎng)站怎么做中國(guó)宣布取消新冠免費(fèi)治療
  • 福建龍巖疫情一共有多少例aso如何優(yōu)化
  • 建站推廣網(wǎng)站排名東莞企業(yè)網(wǎng)站排名優(yōu)化
  • 懷化同城網(wǎng)站四川游戲seo整站優(yōu)化
  • wpf 網(wǎng)站開(kāi)發(fā)百度云網(wǎng)盤(pán)資源
  • 怎么做網(wǎng)站鵝蛋生蠔指數(shù)基金定投怎么買
  • 扁平化顏色網(wǎng)站合肥網(wǎng)絡(luò)推廣公司
  • wordpress 過(guò)期時(shí)間seo是什么車
  • php做的網(wǎng)站模板下載網(wǎng)站seo優(yōu)化皆宣徐州百都網(wǎng)絡(luò)不錯(cuò)
  • opencart做網(wǎng)站視頻國(guó)外域名購(gòu)買
  • 武漢論壇網(wǎng)站有哪些怎么進(jìn)行網(wǎng)絡(luò)推廣
  • 量化交易網(wǎng)站開(kāi)發(fā)杭州網(wǎng)站優(yōu)化效果
  • 包包網(wǎng)站建設(shè)策劃書(shū)seo搜索優(yōu)化專員招聘
  • 企業(yè)網(wǎng)站管理系統(tǒng)哪個(gè)好百度開(kāi)戶代理
  • 網(wǎng)站推廣只能使用在線手段進(jìn)行。中國(guó)萬(wàn)網(wǎng)域名注冊(cè)官網(wǎng)
  • 我想在網(wǎng)站上賣食品怎么做建網(wǎng)站費(fèi)用
  • 免費(fèi)b2b網(wǎng)站要怎么做谷歌seo教程
  • 做網(wǎng)站和app多少費(fèi)用免費(fèi)網(wǎng)站推廣工具