الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مقارنه بين 2 dimensional arrays

بدأه قمر الامارات في 3 نوفمبر 2011 · 1 رد · 517 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

صباح الورد

انا عندي 2 ... 2 dimensional arrays

الاولى ..

String[][] board; 
board = new String[ROWS][COLUMNS];

و الثانية .. فيها لست البوزيشن او الاماكن المهمة في الTic Tac Toe ( للعبة الاكس او )

 int[][] prop = {{1, 1}, {0, 0}, {0, 2}, {2, 0}, {2, 2}};

الفكرة اني ابا البرنامج يشوف لو هالبوزيشن (( مثلااا {1, 1})) موجوده في الboard لو كانت خالية يسوي return للقيمة على اساس الكمبيوتر يختارها و يلعب في هالمكان و اذا مب خالية ينتقل للقيمة الثانية (( مثلا {0, 0} ))

انا جربت هالكود بس طلع عندي غلط :

public int[] nextMove(String player) {
        int[][] prop = {{1, 1}, {0, 0}, {0, 2}, {2, 0}, {2, 2}};


        int counter = 0;
        int pos[] = new int[18];
        for (int i = 0; i < 18; i++) {
            pos = -1;
        }

for (int i = 0; i < prop.length; i++) {
                for (int j = 0; j < prop.length; j++) {
                    if(Arrays.equals(prop,board)){ 
                        if (board[j].equals(" ")){
                        System.out.println(i + "," + j);
                        pos[counter] = i;
                        return new int[]{i, j};

                    }
                    pos[counter + 1] = j;
                    counter = counter + 2;
                    //if(prop[j]== board[j]) {      
                    }
                }


        } return pos;
    }

أتمنى حد يقدر يعطيني طريقة لتصليح الخطا

#2
قمر الامارات كتب:

صباح الورد

انا عندي 2 ... 2 dimensional arrays

الاولى ..

String[][] board; 
board = new String[ROWS][COLUMNS];

و الثانية .. فيها لست البوزيشن او الاماكن المهمة في الTic Tac Toe ( للعبة الاكس او )

 int[][] prop = {{1, 1}, {0, 0}, {0, 2}, {2, 0}, {2, 2}};

الفكرة اني ابا البرنامج يشوف لو هالبوزيشن (( مثلااا {1, 1})) موجوده في الboard لو كانت خالية يسوي return للقيمة على اساس الكمبيوتر يختارها و يلعب في هالمكان و اذا مب خالية ينتقل للقيمة الثانية (( مثلا {0, 0} ))

انا جربت هالكود بس طلع عندي غلط :

public int[] nextMove(String player) {
        int[][] prop = {{1, 1}, {0, 0}, {0, 2}, {2, 0}, {2, 2}};


        int counter = 0;
        int pos[] = new int[18];
        for (int i = 0; i < 18; i++) {
            pos = -1;
        }

for (int i = 0; i < prop.length; i++) {
                for (int j = 0; j < prop.length; j++) {
                    if(Arrays.equals(prop,board)){ 
                        if (board[j].equals(" ")){
                        System.out.println(i + "," + j);
                        pos[counter] = i;
                        return new int[]{i, j};

                    }
                    pos[counter + 1] = j;
                    counter = counter + 2;
                    //if(prop[j]== board[j]) {      
                    }
                }


        } return pos;
    }

أتمنى حد يقدر يعطيني طريقة لتصليح الخطا

لقد حاولت المساعده في حل موضوعك كالأتي :

في الأول سنبحث في المصفوفه board عن طريق أستخدام المواقع المخرنه في المصفوفه prop (في حاله وجود موقع فارغ يتم إرجاعه مصفوفه احاديه البعد تحتوي على عنصرين الأول الصف والثاني العمود للموقغ ) كالأتي :

		//at first search in speachil pleace
			for (int i = 0; i < prop.length; i++)
			{
				if (board[prop[0]][prop[1]].equals(" "))
				{
					System.out.println("prop[0]="+prop[0]);//row
					System.out.println("prop[1]="+prop[1]);//col
					return new int[]{prop[0],prop[1]};
					//					row      col
				}
			}

ثانيا سنبحث في جميع المصفوفه board طبع مع عدم تجاهل المواقع التي بحثنا عنها حتى لا نعقد الكود (في حاله وجود موقع فارغ يتم إرجاعه مصفوفه احاديه البعد تحتوي على عنصرين الأول الصف والثاني العمود للموقغ ) كالأتي :

		//at second search all other elements in array board
			for (int i = 0; i < board.length; i++)
			{
				for (int j = 0; j < board.length; j++)
				{
					if (board[j].equals(" "))
					{
						return new int[]{i, j};
						//			    row,col
					}
				}
			}

ثالثا (في حاله عدم وجود موقع فارغ يتم إرجاعه مصفوفه احاديه البعد فارغه ) كالأتي :

		//return empty array if board is full
			return new int[]{};

الكود كامل :

//NOTE save a file by Sma2DimensionalTicTacToe.java
// the modification created by SMA for  arabteam2000.com 
public class Sma2DimensionalTicTacToe
{
		static String[][]  board = new String[][]{{"X","O","X"},
												   {"X","O","O"},
												   {"X"," ","X"}};
        public static void main ( String [] args )
        {
			int ar[]=nextMove("player1s1");
			if(ar.length==0)
				System.out.println("all postions are full");
			else
			{
				System.out.println("you can insert data in postion ("+ar[0]+","+ar[1]+") in board array");
			}
        }

		public static int[] nextMove(String player)
		{

			//board = new String[ROWS][COLUMNS];

			int[][] prop = {{1, 1}, {0, 0}, {0, 2}, {2, 0}, {2, 2}};

		//at first search in speachil pleace
			for (int i = 0; i < prop.length; i++)
			{
				if (board[prop[0]][prop[1]].equals(" "))
				{
					System.out.println("prop[0]="+prop[0]);//row
					System.out.println("prop[1]="+prop[1]);//col
					return new int[]{prop[0],prop[1]};
					//					row      col
				}
			}
		//at second search all other elements in array board
			for (int i = 0; i < board.length; i++)
			{
				for (int j = 0; j < board.length; j++)
				{
					if (board[j].equals(" "))
					{
						return new int[]{i, j};
						//			    row,col
					}
				}
			}
		//return empty array if board is full
			return new int[]{};
		}

}

أرجو ان أكون وفيت الشئ المطلوب

وما التوفيق إلا من عند الله

تم تعديل هذه المشاركة بواسطة sma88 في 11 نوفمبر 2011 في 03:47

1

banner1.gif

مواضيع مشابهة