當前位置:首頁 » 游戲種類 » 安卓小游戲開發五子棋

安卓小游戲開發五子棋

發布時間: 2022-12-15 15:58:12

A. 安卓厲害的五子棋

其實在電腦出現之前,五子棋的玩家就發現黑棋採取某些開局贏面極大,實踐中白棋幾種很強的防守都無法阻擋黑棋最終贏,也懷疑有先手「絕對」必勝的方法。但這不能保證可能遺漏了某種白棋能贏的方式,所以二十世紀初五子棋的普遍的觀點是黑棋應該是必勝,但近百年年都沒有人能夠真正「證明」出來白棋無論怎麼下都是必敗的——這個結論最終還是通過電腦來嚴格證明的。

其中1992年Victor Allis通過編程證明不帶禁手的五子棋,黑必勝的,文章地址在這里:https://project.dke.maastrichtuniversity.nl/games/files/phd/SearchingForSolutions.pdf

——然後說說帶禁手的五子棋——

禁手規則是只針對黑棋的,簡而言之是黑棋只允許使用沖四活三這一種贏法(當然不排除白棋故意沖四不擋這種方法)。設計的目的也是為了限制黑棋的巨大優勢,白棋也多了逼禁手這兒一種贏法。但後來人們也逐步發現帶禁手後,黑棋依然似乎能不敗。直到後來,也有人證明,帶禁手執黑也可以必勝。
2001年Janos Wagner第一次證明的帶禁手的五子棋,也是黑必勝的,文章地址在這里:http://www.sze.hu/~gtakacs/download/wagnervirag_2001.pdf

這個後面的證明比前面的證明要強很多,因為按照帶禁手的走法,不帶禁手也一定必勝,但倒過來未必。
黑棋的優勢到底有多大呢?在26個職業開局裡,已經發現有19個是黑棋必勝的(一打必勝)。

——然後說說五手兩打——

這還不說,為了進一步削弱黑棋的優勢,國際上推出五手兩打(就是黑棋的第三步需要下兩個點,但由白棋挑選讓其下較弱的哪一個)的規則。可是人們發現黑棋帶禁手依然是必勝。也就是說,黑棋必勝不僅僅有一種方法,而是至少有兩種以上(來回應各種變種的第四步),像浦月、花月這種黑棋超級優勢開局都有三種以上的必勝法。

從實踐的角度來講,網上是可以搜索「地毯譜」( 更新:目前花月、浦月、雲月、雨月、峽月、溪月、金星、水月、寒星、明星、嵐月、新月、名月,山月,殘月都是五手兩打必勝),一般在幾百兆左右,可以用renlib軟體打開,所謂地毯譜的意思就是黑棋會指定下法,但白棋每一步都可以選擇棋盤任意位置,最後黑棋必勝。也就是說,只要按照此棋譜下棋,五子棋世界冠軍都一定會輸給你。

B. 怎樣玩五子棋

1,最基本的是無論橫著、豎著、左斜或者右斜,只要誰先組成連著的五子(五子連珠)誰就贏了。
2,一般剛開始玩都喜歡對方走了連著的三子才開始堵,但是高手比賽或者與高手過招的時候,推薦在對方剛組成活二子(兩邊都沒有敵方棋子的連二子)就要去堵。
3,不要給對方組成活四子的可能,否則必輸無疑。
4,在將對方的棋子隔散開來的同時,要保證自己棋子的密集度,並且有兩個方向的開放性。(如果被對手堵在一個圈裡,那就不好贏了。)
5,單獨組成活四子非常難,不如同時組成兩個活三子,兩個半四子,一個活三一個半四。這樣子對方無論堵你哪個,你都可以利用另一個獲勝。
6,在落子的時候,要先考慮對方是否要同時組成好幾個連子,尤其是其中包括活三或者半四的。如果沒有,才能設計自己進攻的套路。當然在自己有足夠把握先對手組成五子的時候,可以先考慮自己的進攻套路,然後再思考對方的目的和走勢。
7,正規比賽中有國際規則,比如三三禁手(禁止黑子同時組成兩個活三子),六連(黑子有六個連子就輸了。比賽中經常會出現白子方利用白棋走勢設計迫使黑子六連而獲勝),等等。
8,無論正規或者業余,基本上都是黑子先走(叫黑子先手)。玩玩的話倒沒那麼多顧忌。

另:
1,網上有很多五子棋教學視頻,如果真的喜歡五子棋可以研究一下,有一些「必勝套路」,學了可以偶爾冒充一下高手。
2,騰訊有一款什麼什麼版(好玩版?娛樂版?)的手機五子棋(支持安卓),是人機和人競的集合軟體,可以選擇人機模式,也可以選擇和QQ玩家對戰的模式,甚至可以開個房間去單挑菜鳥(自己把房間號發過去讓他進來即可),沒信心玩家對戰,可以先練習一下人機。人機里偶爾會有套路bug(你只要怎樣怎樣走,就可以贏),但是大多數套路都是很優秀、會變通的,可以說這款五子棋是我玩過的最好的了,可以堪比象棋領域的象棋小巫師了,不,說不定更好。

C. 請問我要用Android studio做一個五子棋的小游戲怎麼配置開發環境

第一步,不考慮AI的情況下,先簡單實現單人點擊落子,點一次換一次黑白,落一次子判斷一次輸贏。第二步,加入socket通信兩個人互落子。實現開局,落子,判斷輸贏,悔棋,認輸,重新開局基本操作。第三步,加入AI,人機對戰。

D. Android 五子棋小游戲 onDraw畫棋盤 棋子畫在棋盤線的下面

你把棋盤線的層級設低一點.

E. 比如製作五子棋的app怎麼製作,需要學些什麼

首先你有編程基礎是再好不過的了。
手機游戲開發的平台是JME,一般不會用到C++。當然學過C++的更好。
你學的可能是JEE,所以你一定要把JME好好學一下,重點是MIDlet,CANVAS,RecordStore。此外MIDP1.0和2.0的特性要搞清楚,如果做和網路有關的還要學習MIDP網路編程。掌握這些就基本上門什麼問題了,學的不多,對於一個會C++/JEE的人來說,應該可以在1個月左右學完。
和其他語言一樣,JME關鍵是要多練,自己試著開發幾個小游戲出來是不錯的練習辦法,可以找出你學習上的不足點。有條件的話,做出來的游戲應該拿到真機上運行,因為在模擬器上運行和真機有區別。
如果是獨立開發手游,那麼還要掌握一些基本的軟體,如PhotoShop,Mappy,和簡單的聲效處理。
另外有需求的話可以學學JTWI,特別是Mobile 3D Graphics(M3G)技術,這是以後發展的趨勢(由於本人對這塊很薄弱,所以不能誤導你,就不多說了)。
總之,你就再需要學JME和多練習,就夠了。PS.一般來說JME工程師比JSE和JEE的待遇要好一些。而且從事游戲行業的上班玩游戲不會被罵。如果哪天你閑著無聊和同事聊天聊的太囂張被BOSS看見了,他第一句應該是說「有閑功夫多玩玩游戲,閑聊什麼天!。」

F. 求一個安卓開發小游戲源代碼,臨時交作業用

package com.fiveChess;

import android.app.Activity;
import android.os.Bundle;
import android.view.Display;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.view.WindowManager;

public class MainActivity extends Activity {
GameView gameView = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
Display display = this.getWindowManager().getDefaultDisplay();
gameView = new GameView(this,display.getWidth(),display.getHeight());
setContentView(gameView);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add("重新開始").setIcon(android.R.drawable.ic_menu_myplaces);
menu.add("退出");
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getTitle().equals("重新開始")){
gameView.canPlay = true;
gameView.chess = new int[gameView.row][gameView.col];
gameView.invalidate();
}else if(item.getTitle().equals("退出")){
finish();
}
return super.onOptionsItemSelected(item);
}
}

package com.fiveChess;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.view.MotionEvent;
import android.view.View;

public class GameView extends View {
Context context = null;
int screenWidth,screenHeight;
String message = "";//提示輪到哪個玩家
int row,col; //劃線的行數和列數
int stepLength = 30;//棋盤每格間距
int[][] chess = null;//0代表沒有棋子,1代表是黑棋,2代表白旗
boolean isBlack = true;
boolean canPlay = true;
public GameView(Context context,int screenWidth,int screenHeight) {
super(context);
this.context = context;
this.screenWidth = screenWidth;
this.screenHeight = screenHeight;
this.message = "黑棋先行";
row = (screenHeight-50)/stepLength+1;
col = (screenWidth-10)/stepLength+1;
chess = new int[row][col];

}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(Color.WHITE);
canvas.drawRect(0, 0, screenWidth, screenHeight, paint);//畫背景
paint.setColor(Color.BLUE);
paint.setTextSize(25);
canvas.drawText(message, (screenWidth-100)/2, 30, paint);//畫最頂層的字
paint.setColor(Color.BLACK);
//畫棋盤
for(int i=0;i<row;i++){
canvas.drawLine(10, 50+i*stepLength, 10+(col-1)*stepLength, 50+i*stepLength, paint);
}
for(int i=0;i<col;i++){
canvas.drawLine(10+i*stepLength,50,10+i*stepLength,50+(row-1)*stepLength, paint);
}

for(int r=0;r<row;r++){
for(int c=0;c<col;c++){
if(chess[r][c] == 1){
paint.setColor(Color.BLACK);
paint.setStyle(Style.FILL);
canvas.drawCircle(10+c*stepLength, 50+r*stepLength, 10, paint);
}else if(chess[r][c] == 2){
//畫白棋
paint.setColor(Color.WHITE);
paint.setStyle(Style.FILL);
canvas.drawCircle(10+c*stepLength, 50+r*stepLength, 10, paint);

paint.setColor(Color.BLACK);
paint.setStyle(Style.STROKE);
canvas.drawCircle(10+c*stepLength, 50+r*stepLength, 10, paint);
}
}
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if(!canPlay){return false;}
float x = event.getX();
float y = event.getY();
int r = Math.round((y-50)/stepLength);
int c = Math.round((x-10)/stepLength);
if(r<0 || r>row-1 || c<0 || c>col-1){return false;}
if(chess[r][c]!=0){return false;}//若有棋子則不再畫棋子了
if(isBlack){
chess[r][c] = 1;
isBlack = false;
message = "輪到白棋";
}else{
chess[r][c] = 2;
isBlack = true;
message = "輪到黑棋";
}
invalidate();
if(judge(r, c,0,1)) return false;
if(judge(r, c,1,0)) return false ;
if(judge(r, c,1,1)) return false;
if(judge(r, c,1,-1)) return false;

return super.onTouchEvent(event);
}
private boolean judge(int r, int c,int x,int y) {//r,c表示行和列,x表示在y方向上的偏移,y表示在x方向上的偏移
int count = 1;
int a = r;
int b = c;
while(r>=0 && r<row && c>=0 && c<col && r+x>=0 && r+x<row && c+y>=0 && c+y<col && chess[r][c] == chess[r+x][c+y]){
count++;
if(y>0){
c++;
}else if(y<0){
c--;
}
if(x>0){
r++;
}else if(x<0){
r--;
}
}
while(a>=0 && a<row && b>=0 && b<col && a-x>=0 && a-x<row && b-y>=0 && b-y<col && chess[a][b] == chess[a-x][b-y]){
count++;
if(y>0){
b--;
}else if(y<0){
b++;
}
if(x>0){
a--;
}else if(x<0){
a++;
}
}
if(count>=5){
String str = "";
if(isBlack){
str = "白棋勝利";
}else{
str = "黑棋勝利";
}
new AlertDialog.Builder(context).setTitle("游戲結束").setMessage(str).setPositiveButton("重新開始", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
chess = new int[row][col];
invalidate();

}
}).setNegativeButton("觀看棋局", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
canPlay = false;

}
}).show();
return true;
}

return false;
}
}
PS:五子棋,無需圖片,直接在程序里畫出來的。注意我發的是兩個文件,一個activity,一個類文件,別把它當成一個文件了

G. 安卓哪一款五子棋軟體比較厲害

截至目前,棋力較強的apk文件有:五子棋大師、tito gomoku android、五林大會安卓版、蝸牛連珠、小魚兒五子棋、土豆五子棋、renju solver android。其中蝸牛連珠、小魚兒五子棋、土豆五子棋、renju solver android比較強。另外renju solver是一個付費軟體,價格200。

H. 用eclipse開發一個五子棋的小游戲,現在在layout里添加了一個重新開始的按鈕,求按鈕的代碼

//運行代碼很簡單:在eclipse的項目中新建一個類Five.java把下面的代碼放入該類即可//游戲運行:上下左右鍵控制方向,enter鍵確定棋子落定之處,黑白交替執行importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;/** *借鑒別人的。。。 */{ booleanstart=false; JFrameframe; ThreadtimerThread; inth,l;//定義變數 intpans[][]=newint[11][11];//變數初始值 intgbx=5; intgby=5; intziShu=0; intshui=0; Five(){ frame=newJFrame("五子棋"); frame.getContentPane().add(newScreen()); frame.addKeyListener(this); frame.setSize(12*40+5*2,12*40+22+5*2+100);//窗口大小 frame.setVisible(true); frame.repaint(); frame.addWindowListener(newWindowAdapter(){ publicvoidwindowClosing(WindowEvente){ System.exit(0); } });//關閉窗體 } publicvoidkeyPressed(KeyEventevt){ switch(evt.getKeyCode()){ caseKeyEvent.VK_ENTER: if(ziShu%2==0)//子數來判斷誰贏 { heiXia(); }else{ Xia(); } shui=shuiYing(); break; caseKeyEvent.VK_ESCAPE: System.exit(1); break; caseKeyEvent.VK_LEFT: guangBiaoDong(-1,0);//游標動的坐標 break; caseKeyEvent.VK_RIGHT: guangBiaoDong(1,0);//游標動的坐標 break; caseKeyEvent.VK_DOWN: guangBiaoDong(0,1);//游標動的坐標 break; caseKeyEvent.VK_UP: guangBiaoDong(0,-1);//游標動的坐標 break; } frame.repaint();}@SuppressWarnings("serial")classScreenextendsJComponent{ publicvoidpaint(Graphicsg){ Graphics2Dg2d=(Graphics2D)g; xianShi(g2d);//畫圖 }}publicstaticvoidmain(String[]args){ newFive();} voidxianShi(Graphics2Dg2d)//顯示 { xianShiQiPan(g2d);//顯示棋盤 xianShiQiZis(g2d);//顯示旗子 xianShiGuangBiao(g2d);//顯示游標 g2d.setFont(newFont("STXingkai",1,30));//0708第二小組 g2d.setColor(Color.black); g2d.drawString("歡樂五子棋Java版",280,580); g2d.setFont(newFont("stCaiyun",1,40)); if(shui==0)//判斷 { g2d.setColor(Color.black); xianShiTiShiXia(g2d);//顯示誰下棋 }else{ g2d.setColor(Color.black); xianShiTiShiYing(g2d);//顯示誰贏棋 } } voidguangBiaoDong(intfangX,intfangY)////游標動 { if(gbx+fangX>10||gbx+fangX10||gby+fangY=0&&kanx+fx=0&&kany+fy=0&&kanx-fx=0&&kany-fy=5?pans[gby][gbx]:0); }};運行結果:

I. 想做一個五子棋的小游戲程序,有沒人做過的求推薦一個軟體

用J2ME吧,圖書館書很多,你也可以上網下PDF《j2me手機應用開發大全》

J. 請問怎麼用Android studio做一個五子棋小游戲,學藝不精環境配置也不太弄

作為一個初學者,想用Android Studio做一個簡易的五子棋,希望路過的大...
答:需要的話可以傳你份源碼

熱點內容
絕地求生未來之役比賽為什麼進不去 發布:2023-08-31 22:07:08 瀏覽:1386
dota2位置什麼意思 發布:2023-08-31 22:00:04 瀏覽:827
lol電競是什麼樣子 發布:2023-08-31 21:58:40 瀏覽:1285
絕地求生八倍鏡的那個圓圈怎麼弄 發布:2023-08-31 21:58:31 瀏覽:1367
lol龍龜一個多少金幣 發布:2023-08-31 21:55:07 瀏覽:735
王者如何改游戲內名稱 發布:2023-08-31 21:55:06 瀏覽:1026
游戲主播打廣告是什麼意思 發布:2023-08-31 21:55:06 瀏覽:1706
絕地求生如何免費拿到ss7賽季手冊 發布:2023-08-31 21:52:13 瀏覽:903
pgg是哪個國家的戰隊lol 發布:2023-08-31 21:52:07 瀏覽:782
一個人的時候才發現游戲很沒意思 發布:2023-08-31 21:49:24 瀏覽:1414