找回密碼 或 安全提問
 註冊
|註冊|登錄

伊莉討論區

搜索
發表文章前請先閱讀相關版規伊莉需要你的贊助和支持儲值後自動升級用戶組
海賊王蘿莉催眠三上悠亜三上ntr母乳
出馬仙產科 鳥凌辱打磚塊校則女子看們狗單機遊戲

休閒聊天興趣交流學術文化旅遊交流飲食交流家庭事務PC GAMETV GAME
熱門線上其他線上感情感性寵物交流家族門派動漫交流貼圖分享BL/GL
音樂世界影視娛樂女性頻道潮流資訊BT下載區GB下載區下載分享短片
電腦資訊數碼產品手機交流交易廣場網站事務長篇小說體育運動時事經濟
上班一族博彩娛樂

[繁]反派千金等級99~

[繁]秒殺外掛太強了,

[繁]不死不運24- (完)

[繁/無修正]婚戒物語

[繁][720P]海賊王1098

[繁]SYNDUALITY Noir
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 10180|回復: 3

[討論] C# 井字遊戲[複製鏈接]

帖子
931
積分
1546 點
潛水值
7873 米
發表於 2010-10-19 12:44 PM|顯示全部樓層
我製作一個井字遊戲

想用一個重新開始鈕

不知道要輸入哪些指令

請各位大大幫幫忙~~

使用道具檢舉

Azurekite 該用戶已被刪除
發表於 2010-10-31 12:11 AM|顯示全部樓層
按鈕按下後,將所有的函數,歸回初始值!
並將原先使用過的空間(放●與×的地方)
通通清除!

類似有點重跑Load

使用道具檢舉

je42004 該用戶已被刪除
發表於 2012-2-27 11:49 AM|顯示全部樓層
所有積分大於負-100的壞孩子,將可獲得重新機會成為懲罰生,權限跟幼兒生一樣。
本帖最後由 arthurliuliu 於 2012-2-27 11:54 AM 編輯
  1. public static void flush(int[] Arr, int[] ArrSwap, int[] Defaultvalues)     
  2.         {
  3.             for (int i = 0; i < Defaultvalues[0]; i++)
  4.             {
  5.                 Arr[i] = 0;
  6.                 ArrSwap[i] = 0;
  7.             }
  8.             Defaultvalues[1] = 4;
  9.             Defaultvalues[2] = Defaultvalues[1];
  10.             Defaultvalues[3] = 1;
  11.             Arr[Defaultvalues[1]] = 1;
  12.         }
複製代碼
code沒包,板主代為編輯。
arthurliuliu


...
瀏覽完整內容,請先 註冊登入會員
所有積分大於負-100的壞孩子,將可獲得重新機會成為懲罰生,權限跟幼兒生一樣。

使用道具檢舉

  高級幼兒生(30/200)

大石秀一郎

Rank: 1

帖子
68
積分
84 點
潛水值
8369 米
發表於 2020-12-1 07:29 PM|顯示全部樓層
成為伊莉的版主,你將獲得更高級和無限的權限。把你感興趣的版面一步步地發展和豐盛,那種滿足感等著你來嚐嚐喔。
本帖最後由 sango99001 於 2020-12-27 12:37 PM 編輯

這是我這陣子自己寫出來的井字遊戲,無ai,只有雙方玩家輪流下子,請高手多多指教
以下為我的程式碼
  1. //宣告物件陣列及變數
  2.         Label[,] lbl; int[] player = new int[2];
  3.         const int ranks = 3; //行列個數(依照物件數量更改)
  4.         const int line = 3; //連線子數(依需求更改)
  5.         //   最大需求子數        中間數  落子數
  6.         int need = line * 2 - 1, median, counter;
  7.         private void frmOOXX_Load(object sender, EventArgs e)
  8.         {
  9.             //中間數,Label物件陣列設定
  10.             median = need - line;
  11.             lbl = new Label[ranks, ranks]; player[0] = -1; counter = 1;
  12.             for (int x = 0; x < ranks; x++)
  13.             {
  14.                 for (int y = 0; y < ranks; y++)
  15.                 {
  16.                     lbl[x, y] = (Label)this.Controls.Find("label" + (x * ranks + y + 1).ToString(), true).FirstOrDefault();
  17.                 }
  18.             } button1_Click(sender, e);
  19.         }

  20.         private void label1_Click(object sender, EventArgs e)
  21.         {
  22.             //按下物件後的動作int row = -1, col = -1;
  23.             int row = -1, col = -1;
  24.             for (int x = 0; x < ranks; x++)
  25.             {
  26.                 for (int y = 0; y < ranks; y++)
  27.                 {
  28.                     if (lbl[x, y] == sender)
  29.                     {
  30.                         row = x; col = y;
  31.                         if (lbl[x, y].Text == "" && lblText.Text == "")
  32.                         {
  33.                             if (player[1] == 1) lbl[x, y].Text = "○";
  34.                             else lbl[x, y].Text = "●";

  35.                             counter = counter + 1; player[1] = player[1] * -1;
  36.                             c(row, col);
  37.                         }
  38.                     }
  39.                     if (row > -1 && col > -1) break;
  40.                 }
  41.                 if (row > -1 && col > -1) break;
  42.             }
  43.         }

  44.         private void button1_Click(object sender, EventArgs e)
  45.         {
  46.             //遊戲重置
  47.             if (counter > 0)
  48.             {
  49.                 player[0] = player[0] * -1; player[1] = player[0] * -1; counter = 0; lblText.Text = "";
  50.                 for (int x = 0; x < ranks; x++)
  51.                 {
  52.                     for (int y = 0; y < ranks; y++)
  53.                     {
  54.                         lbl[x, y].Text = "";
  55.                     }
  56.                 }
  57.             }
  58.         }

  59.         private void c(int row, int col)
  60.         {
  61.             //宣告變數
  62.             string[,] str = new string[4, need];
  63.             int x1 = line - 2, x2 = ranks - 1, x3 = x2 - x1;
  64.             bool[] t = new bool[4] { true, true, true, true };
  65.             
  66.             //進入判斷4角不足連子數的函式
  67.             for (int cols = 0; cols < x1; cols++)
  68.                 for (int rows = 0; rows == cols; rows++)
  69.                     for (int i = 0; i < 4; i++)
  70.                         b(row, col, rows, cols, i, x1, x2, x3, ref t[i]);

  71.             //依按下物件的行列編號,將對應的線段物件標記寫入陣列(判斷是否連線使用)
  72.             for (int c = 0; c < 4; c++)
  73.             {
  74.                 switch (c)
  75.                 {
  76.                     case 0: //橫線
  77.                         for (int i = 0; i < line; i++)
  78.                         {
  79.                             bool b1 = false, b2 = false;
  80.                             b1 = rc1(col, i);
  81.                             if (b1)
  82.                                 str[c, median - i] = lbl[row, col - i].Text;
  83.                             b2 = rc2(col, i);
  84.                             if (b2)
  85.                                 str[c, median + i] = lbl[row, col + i].Text;
  86.                         }
  87.                         break;
  88.                     case 1: //直線
  89.                         for (int i = 0; i < line; i++)
  90.                         {
  91.                             bool a1 = false, a2 = false;
  92.                             a1 = rc1(row, i);
  93.                             if (a1)
  94.                                 str[c, median - i] = lbl[row - i, col].Text;
  95.                             a2 = rc2(row, i);
  96.                             if (a2)
  97.                                 str[c, median + i] = lbl[row + i, col].Text;
  98.                         }
  99.                         break;
  100.                     case 2: //反斜線
  101.                         for (int i = 0; i < line; i++)
  102.                         {
  103.                             bool a1 = false, b1 = false, a2 = false, b2 = false;
  104.                             a1 = rc1(row, i); b1 = rc1(col, i);
  105.                             if (a1 && b1 && t[0])
  106.                                 str[c, median - i] = lbl[row - i, col - i].Text;
  107.                             a2 = rc2(row, i); b2 = rc2(col, i);
  108.                             if (a2 && b2 && t[1])
  109.                                 str[c, median + i] = lbl[row + i, col + i].Text;
  110.                         }
  111.                         break;
  112.                     case 3: //斜線
  113.                         for (int i = 0; i < line; i++)
  114.                         {
  115.                             bool a1 = false, b2 = false, a2 = false, b1 = false;
  116.                             a1 = rc1(row, i); b2 = rc2(col, i);
  117.                             if (a1 && b2 && t[2])
  118.                                 str[c, median - i] = lbl[row - i, col + i].Text;
  119.                             a2 = rc2(row, i); b1 = rc1(col, i);
  120.                             if (a2 && b1 && t[3])
  121.                                 str[c, median + i] = lbl[row + i, col - i].Text;
  122.                         }
  123.                         break;
  124.                 }
  125.                 result(ref str, c, str[c, median]); if (lblText.Text != "") break;
  126.             }

  127.         }

  128.         private void result(ref string[,] str, int s, string str1)
  129.         {
  130.             ////判斷是否連線或平手
  131.             for (int x = 0; x <= need - line; x++)
  132.             {
  133.                 int y = 0;
  134.                 for (int i = 0; i < line; i++) {
  135.                     if (str[s, i + x] != str1) continue;
  136.                     y++;
  137.                     if (y == line) lblText.Text = str1 + "勝";
  138.                 }
  139.             }
  140.             if (counter == Math.Pow(ranks, 2) && lblText.Text == "")
  141.                 lblText.Text = "平手";
  142.             if (lblText.Text == "")
  143.                 s++;
  144.         }
  145.         bool rc1(int c, int x)
  146.         {//遞減找所需的子
  147.             bool a = false;
  148.             if (c - x > -1) a = true;
  149.             return a;
  150.         }
  151.         bool rc2(int c, int x)
  152.         { //遞增找所需的子
  153.             bool a = false;
  154.             if (c + x < ranks) a = true;
  155.             return a;
  156.         }

  157.         void b(int row, int col, int rows, int cols, int i, int x1, int x2, int x3, ref bool t)
  158.         { //排除連子數不足的線段
  159.             bool[] a = new bool[4] { false, false, false, false };
  160.             switch (i)
  161.             {
  162.                 case 0:
  163.                     a = new bool[4] { rl(row, x1, rows), rl(col, x2, cols), rl(row, x2, rows), rl(col, x1, cols) };
  164.                     break;
  165.                 case 1:
  166.                     a = new bool[4] { lr(row, 0, rows), lr(col, x3, cols), lr(row, x3, rows), lr(col, 0, cols) };
  167.                     break;
  168.                 case 2:
  169.                     a = new bool[4] { rl(row, x1, rows), lr(col, 0, cols), rl(row, x2, rows), lr(col, x3, cols) };
  170.                     break;
  171.                 case 3:
  172.                     a = new bool[4] { lr(row, 0, rows), rl(col, x1, cols), lr(row, x3, rows), rl(col, x2, cols) };
  173.                     break;
  174.             }
  175.             if ((a[0] && a[1]) | (a[2] && a[3])) t = false;
  176.         }
  177.         
  178.         bool rl (int c, int x, int d)
  179.         { //遞減判斷左右上邊界
  180.             bool a = false;
  181.             if (c == x - d) a = true;
  182.             return a;
  183.         }
  184.         bool lr(int c, int x, int d)
  185.         { //遞增判斷右或下邊界
  186.             bool a = false;
  187.             if (c == x + d) a = true;
  188.             return a;
  189.         }
複製代碼


...
瀏覽完整內容,請先 註冊登入會員
附件: 你需要登錄才可以下載或查看附件。沒有帳號?註冊
如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。

使用道具檢舉

您需要登錄後才可以回帖 登錄 | 註冊

Powered by Discuz!

© Comsenz Inc.

重要聲明:本討論區是以即時上載留言的方式運作,對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿上傳和撰寫 侵犯版權(未經授權)、粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。
回頂部