Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > .NET Framework > Forum > ช่วยหน่อยนะคะ อันนี้เป็นเกม Maze (เขาวงกต)อยากให้ช่วยอธิบายอัลกอลิทึมให้หน่อยค่ะว่าใช้อัลกอลิทึมอะไรในส่วนไหนของโปรแกรม



 

ช่วยหน่อยนะคะ อันนี้เป็นเกม Maze (เขาวงกต)อยากให้ช่วยอธิบายอัลกอลิทึมให้หน่อยค่ะว่าใช้อัลกอลิทึมอะไรในส่วนไหนของโปรแกรม

 



Topic : 047964

Guest




อันนี้เป็นเกม Maze (เขาวงกต)เป็นแบบออโต้ค่ะ คือ โปรแกรมจะหาเส้นทางในการเดินเองจนพบทางออก อยากให้ช่วยอธิบายอัลกอลิทึมให้หน่อยค่ะว่าใช้อัลกอลิทึมอะไรในส่วนไหนของโปรแกรม แล้วก็มี Method , Constucktor , interfaceอะไรบ้าง ทำหน้าที่อไร (ช่วยหน่อยนะคะ) ขอบคุนมากค่ะ...นู๋มิ้น



import java.awt.*;

public class Maze extends java.applet.Applet implements Runnable {

    int[][] maze;  // Description of state of maze.  The value of maze[i][j]
    //รายละเอียดของรัฐของเขาวงกต ค่าของเขาวงกต [i] [j]
                   // is one of the constants wallCode, pathcode, emptyCode,
    //เป็นหนึ่งใน wallCode ค่าคงที่ pathcode, emptyCode,
                   // or visitedCode.  (Value can also be negative, temporarily
    //visitedCode หรือ (Value ยังสามารถลบชั่วคราว
                   // inside createMaze().)
    //ภายใน createMaze () . )
                   //    A maze is made up of walls and corridors.  maze[i][j]
    //เขาวงกตขึ้นจากกำแพงและทางเดิน เขาวงกต [i] [j]
                   // is either part of a wall or part of a corridor.  A cell
    //เป็นส่วนหนึ่งของผนังหรือส่วนของทางเดินทั้ง เซลล์
                  //
    //เซลล์ที่เป็นส่วนหนึ่งของ cooridor จะแสดงเป็น pathCode
                   //
    //ถ้ามันเป็นส่วนหนึ่งของเส้นทางปัจจุบันผ่านเขาวงกตโดย
                 //
    //visitedCode หากมีการสำรวจแล้วไม่พบ
               // a solution, and by emptyCode if it has not yet been explored.
    //โซลูชั่นและโดย emptyCode ถ้ายังไม่ได้สำรวจ

    final static int backgroundCode = 0;
    final static int wallCode = 1;
    final static int pathCode = 2;
    final static int emptyCode = 3;
    final static int visitedCode = 4;

       // the next six items are set up in init(), and can be specified
    //ถัดไปหกรายการตั้งค่าใน init () และสามารถระบุ
       // using applet parameters
    //การใช้พารามิเตอร์แอพเพล็ต

    Color[] color = new Color[5];
    // colors associated with the preceding 5 constants;
    //สีที่เกี่ยวข้องกับค่าคงที่ก่อนหน้า 5
    int rows = 21;
    // number of rows of cells in maze, including a wall around edges
    //จำนวนแถวของเซลล์ในเขาวงกตรวมถึงกำแพงรอบขอบ
    int columns = 21;
    // number of columns of cells in maze, including a wall around edges
    //จำนวนคอลัมน์ของเซลล์ในเขาวงกตรวมถึงกำแพงรอบขอบ
    int border = 0;
    // minimum number of pixels between maze and edge of applet
    //จำนวนต่ำสุดของพิกเซลระหว่างเขาวงกตและขอบของแอพเพล็ต
    int sleepTime = 5000;
    // wait time after solving one maze before making another
    //รอเวลาหลังจากการแก้หนึ่งเขาวงกตก่อนอื่น
    int speedSleep = 50;
    // short delay between steps in making and solving maze
    //ล่าช้าระหว่างขั้นตอนในการทำและการแก้เขาวงกต

    Thread mazeThread;   // thread for creating and solving maze
    //หัวข้อสำหรับการสร้างและแก้ไขเขาวงกต

    int width = -1;   // width of applet, to be set by checkSize()
    //ความกว้างของแอพเพล็ตที่จะกำหนดโดย checkSize
    int height = -1;  // height of applet, to be set by checkSize()
    //ความสูงของแอพเพล็ตที่จะกำหนดโดย checkSize ()

    int totalWidth;
    // width of applet, minus border area (set in checkSize())
    //ความกว้างของแอพเพล็ตพื้นที่ชายแดน, ลบ (ตั้งอยู่ใน checkSize ())
    int totalHeight;
    // height of applet, minus border area (set in checkSize())
    //ความสูงของแอพเพล็ตพื้นที่ชายแดน, ลบ (ตั้งอยู่ใน checkSize ())
    int left;
    // left edge of maze, allowing for border (set in checkSize())
    //ขอบซ้ายของเขาวงกตเพื่อให้สามารถชายแดน (ตั้งอยู่ใน checkSize ())
    int top;
    // top edge of maze, allowing for border (set in checkSize())
    //ขอบด้านบนของเขาวงกตเพื่อให้สามารถชายแดน (ตั้งอยู่ใน checkSize

    boolean mazeExists = false;
    // set to true when maze[][] is valid; used in
    //การตั้งค่าจริงเมื่อเขาวงกต [] [] ถูกต้อง; ใช้ใน
    // redrawMaze(); set to true in createMaze(), and
    //redrawMaze (); การตั้งค่าจริงใน createMaze () และ
    // reset to false in run()
    //รีเซ็ตเท็จในระยะ


    int status = 0;  // A variable used by the applet to control the mazeThread.
    //ตัวแปรที่ใช้ในการควบคุมแอปเพล็ mazeThread

    final static int GO = 0, //Some constants to be uses as values for status.
            //บางคงต้องใช้เป็นค่าสำหรับสถานะ
                     SUSPEND = 1,
                     TERMINATE = 2;

    Integer getIntParam(String paramName) {
          // Utility routine for reading an applet param which is an integer.
        //Utility ประจำอ่านพระราม applet ซึ่งเป็นจำนวนเต็ม
          // Returns null if there is no such param, or if the value is not
        //คืน null ถ้าไม่มีพารามิเตอร์ดังกล่าวหรือถ้าค่าไม่ได้
          // a legal integer.
        //จำนวนเต็มกฎหมาย
       String param = getParameter(paramName);
       if (param == null)
          return null;
       int i;
       try {
          i = Integer.parseInt(param);
       }
       catch (NumberFormatException e) {
          return null;
       }
       return new Integer(i);
    }

    Color getColorParam(String paramName) {
          // Utility routine for reading an applet param which is a color.
        //Utility ประจำอ่านพระราม applet ซึ่งเป็นสี
          // Returns null if there is no such param, or if the value is not
        //คืน null ถ้าไม่มีพารามิเตอร์ดังกล่าวหรือถ้าค่าไม่ได้
          // a legal color.  Colors can be specified as three integers,
        //สีตามกฎหมาย สีสามารถระบุเป็นสามจำนวนเต็ม
          // separated by spaces, giving RGB components in the range 0 to 255;
        //แยกโดยช่องว่างให้ส่วน RGB ในช่วง 0-255;
          // the standard Java color names are also acceptable.
        //มาตรฐาน Java ชื่อสียังยอมรับ
       String param = getParameter(paramName);
       if (param == null || param.length() == 0)
          return null;
       if (Character.isDigit(param.charAt(0))) {  // try to parse RGB color
           //พยายามที่จะแยกสี RGB
          int r=0,g=0,b=0;
          int pos=0;
          int d=0;
          int len=param.length();
          while (pos < len && Character.isDigit(param.charAt(pos)) && r < 255) {
              d = Character.digit(param.charAt(pos),10);
              r = 10*r + d;
              pos++;
          }
          if (r > 255)
             return null;
          while (pos < len && !Character.isDigit(param.charAt(pos)))
             pos++;
          if (pos >= len)
             return null;
          while (pos < len && Character.isDigit(param.charAt(pos)) && g < 255) {
              d = Character.digit(param.charAt(pos),10);
              g = 10*g + d;
              pos++;
          }
          if (g > 255)
             return null;
          while (pos < len && !Character.isDigit(param.charAt(pos)))
             pos++;
          if (pos >= len)
             return null;
          while (pos < len && Character.isDigit(param.charAt(pos)) && b < 255) {
              d = Character.digit(param.charAt(pos),10);
              b = 10*b + d;
              pos++;
          }
          if (b > 255)
             return null;
          return new Color(r,g,b);
       }
       if (param.equalsIgnoreCase("black"))
          return Color.black;
       if (param.equalsIgnoreCase("white"))
          return Color.white;
       if (param.equalsIgnoreCase("red"))
          return Color.red;
       if (param.equalsIgnoreCase("green"))
          return Color.green;
       if (param.equalsIgnoreCase("blue"))
          return Color.blue;
       if (param.equalsIgnoreCase("yellow"))
          return Color.yellow;
       if (param.equalsIgnoreCase("cyan"))
          return Color.cyan;
       if (param.equalsIgnoreCase("magenta"))
          return Color.magenta;
       if (param.equalsIgnoreCase("pink"))
          return Color.pink;
       if (param.equalsIgnoreCase("orange"))
          return Color.orange;
       if (param.equalsIgnoreCase("gray"))
          return Color.gray;
       if (param.equalsIgnoreCase("darkgray"))
          return Color.darkGray;
       if (param.equalsIgnoreCase("lightgray"))
          return Color.lightGray;
       return null;  // param is not a legal color//พระรามไม่เป็นสีตามกฎหมาย
    }

    public void init() {
         Integer parm;
         parm = getIntParam("rows");
         if (parm != null && parm.intValue() > 4 && parm.intValue() <= 500) {
            rows = parm.intValue();
            if (rows % 2 == 0)
               rows++;
         }
         parm = getIntParam("columns");
         if (parm != null && parm.intValue() > 4 && parm.intValue() <= 500) {
            columns = parm.intValue();
            if (columns % 2 == 0)
               columns++;
         }
         parm = getIntParam("border");
         if (parm != null && parm.intValue() > 0 && parm.intValue() <= 100)
            border = parm.intValue();
         parm = getIntParam("sleepTime");
         if (parm != null && parm.intValue() > 0)
            sleepTime = parm.intValue();
         parm = getIntParam("speed");
         if (parm != null && parm.intValue() > 0 && parm.intValue() < 6)
            switch (parm.intValue()) {
               case 1: speedSleep = 1; break;
               case 2: speedSleep = 25; break;
               case 3: speedSleep = 50; break;
               case 4: speedSleep = 100; break;
               case 5: speedSleep = 200; break;
            }
         color[wallCode] = getColorParam("wallColor");
         if (color[wallCode] == null)
            color[wallCode] = Color.black;
         color[pathCode] = getColorParam("pathColor");
         if (color[pathCode] == null)
            color[pathCode] = new Color(200,0,0);
         color[emptyCode] = getColorParam("emptyColor");
         if (color[emptyCode] == null)
            color[emptyCode] = new Color(128,128,255);
         color[backgroundCode] = getColorParam("borderColor");
         if (color[backgroundCode] == null)
            color[backgroundCode] = Color.white;
         color[visitedCode] = getColorParam("visitedColor");
         if (color[visitedCode] == null)
            color[visitedCode] = color[emptyCode];
         setBackground(color[backgroundCode]);
    }

    void checkSize() {
          // Called every time something is about to be drawn to
        //สิ่งที่เรียกว่าทุกครั้งที่กำลังจะถูกดึง
          // check the applet size and adjust variables that depend
        //ตรวจสอบขนาดแอพเพล็ตและปรับตัวแปรที่ขึ้นอยู่กับ
          // on the size.  //กับขนาด
       if (getWidth() != width || getHeight() != height) {
          width  = getWidth();
          height = getHeight();
          int w = (width - 2*border) / columns;
          int h = (height - 2*border) / rows;
          left = (width - w*columns) / 2;
          top = (height - h*rows) / 2;
          totalWidth = w*columns;
          totalHeight = h*rows;
       }
    }

    synchronized public void start() {
        status = GO;
        if (mazeThread == null || ! mazeThread.isAlive()) {
          mazeThread = new Thread(this);
          mazeThread.start();
        }
        else
           notify();
    }

    synchronized public void stop() {
        if (mazeThread != null) {
            status = SUSPEND;
            notify();
        }
    }

    synchronized public void destroy() {
       if (mazeThread != null) {
          status = TERMINATE;
          notify();
       }
    }

    synchronized int checkStatus() {
       while (status == SUSPEND) {
          try { wait(); }
          catch (InterruptedException e) { }
       }
       return status;
    }

    public void paint(Graphics g) {
        checkSize();
        redrawMaze(g);
    }

    public void update(Graphics g) {
        // don't bother filling with background color
        //ไม่รำคาญเติมด้วยสีพื้น
        paint(g);             //   because redrawMaze() does that anyway
        //เพราะ redrawMaze () ไม่ว่าอย่างไรก็ตาม
    }

    synchronized void redrawMaze(Graphics g) {
          // draws the entire maze //จับเขาวงกตทั้งหมด
        g.setColor(color[backgroundCode]);
        g.fillRect(0,0,width,height);
        if (mazeExists) {
           int w = totalWidth / columns;  // width of each cell
           //ความกว้างของแต่ละเซลล์
           int h = totalHeight / rows;    // height of each cell
           //ความสูงของแต่ละเซลล์
           for (int j=0; j<columns; j++)
               for (int i=0; i<rows; i++) {
                   if (maze[i][j] < 0)
                      g.setColor(color[emptyCode]);
                   else
                      g.setColor(color[maze[i][j]]);
                   g.fillRect( (j * w) + left, (i * h) + top, w, h );
               }
         }
    }

    synchronized void putSquare(int row, int col, int colorNum) {
           // draw one cell of the maze, to the graphics context "me"
        //วาดหนึ่งเซลล์ของเขาวงกตเพื่อบริบทกราฟิก"me"
        checkSize();
        int w = totalWidth / columns;  // width of each cell
        //ความกว้างของแต่ละเซลล์
        int h = totalHeight / rows;    // height of each cell
        //ความสูงของแต่ละเซลล์
        Graphics me = getGraphics();
        me.setColor(color[colorNum]);
        me.fillRect( (col * w) + left, (row * h) + top, w, h );
        me.dispose();
    }

    public void run() {
           // run method for thread repeatedly makes a maze and then solves it
        //วิธีใช้สำหรับหัวข้อซ้ำทำให้เขาวงกตแล้วแก้มัน
       try { Thread.sleep(2000); } // wait a bit before starting
       //รอสักครู่ก่อนที่จะเริ่ม
       catch (InterruptedException e) { }
       while (true) {
          if (checkStatus() == TERMINATE)
             break;
          makeMaze();
          if (checkStatus() == TERMINATE)
             break;
          solveMaze(1,1);
          if (checkStatus() == TERMINATE)
             break;
          synchronized(this) {
              try { wait(sleepTime); }
              catch (InterruptedException e) { }
          }
          if (checkStatus() == TERMINATE)
             break;
          mazeExists = false;
          checkSize();
          Graphics me = getGraphics();
          redrawMaze(me);   // erase old maze //ลบเขาวงกตเก่า
          me.dispose();
       }
    }

    void makeMaze() {
            // Create a random maze.  The strategy is to start with
        //สร้างเขาวงกตแบบสุ่ม กลยุทธ์คือการเริ่มต้นด้วย
            // a grid of disconnnected "rooms" separated by walls.
        //ตารางของห้อง"disconnnected"แยกจากกันโดยผนัง
            // then look at each of the separating walls, in a random
        //แล้วมองแต่ละผนังแยกในการสุ่ม
            // order.  If tearing down a wall would not create a loop
        //สั่ง ถ้าฉีกลงผนังจะไม่สร้าง loop
            // in the maze, then tear it down.  Otherwise, leave it in place.
        //ในเขาวงกตแล้วฉีกมันลง มิฉะนั้นทิ้งไว้ในสถานที่
        if (maze == null)
           maze = new int[rows][columns];
        int i,j;
        int emptyCt = 0; // number of rooms  //จำนวนห้องพัก
        int wallCt = 0;  // number of walls  //จำนวนผนัง
        int[] wallrow = new int[(rows*columns)/2];
        // position of walls between rooms  //ตำแหน่งของผนังระหว่างห้อง
        int[] wallcol = new int[(rows*columns)/2];
        for (i = 0; i<rows; i++)  // start with everything being a wall
            //เริ่มต้นด้วยทุกอย่างถูกผนัง
            for (j = 0; j < columns; j++)
                maze[i][j] = wallCode;
        for (i = 1; i<rows-1; i += 2)  // make a grid of empty rooms
            //ทำตารางของห้องว่าง
            for (j = 1; j<columns-1; j += 2) {
                emptyCt++;
                maze[i][j] = -emptyCt;
                // each room is represented by a different negative number
                //แต่ละห้องจะแสดงด้วยจำนวนลบที่แตกต่างกัน
                if (i < rows-2) {  // record info about wall below this room
                    //บันทึกข้อมูลเกี่ยวกับผนังห้องด้านล่างนี้
                    wallrow[wallCt] = i+1;
                    wallcol[wallCt] = j;
                    wallCt++;
                }
                if (j < columns-2) {
                    // record info about wall to right of this room
                    //บันทึกข้อมูลเกี่ยวกับผนังด้านขวาของห้องนี้
                    wallrow[wallCt] = i;
                    wallcol[wallCt] = j+1;
                    wallCt++;
                }
             }
        mazeExists = true;
        checkSize();
        if (checkStatus() == TERMINATE)
           return;
        Graphics me = getGraphics();
        redrawMaze(me);  // show the maze  //แสดงเขาวงกต
        me.dispose();
        int r;
        for (i=wallCt-1; i>0; i--) {
            r = (int)(Math.random() * i);
            // choose a wall randomly and maybe tear it down
            //เลือกผนังสุ่มและอาจขาดลง
            if (checkStatus() == TERMINATE)
               return;
            tearDown(wallrow[r],wallcol[r]);
            wallrow[r] = wallrow[i];
            wallcol[r] = wallcol[i];
        }
        for (i=1; i<rows-1; i++)
            // replace negative values in maze[][] with emptyCode
            //แทนค่าลบในเขาวงกต [] [] กับ emptyCode
           for (j=1; j<columns-1; j++)
              if (maze[i][j] < 0)
                  maze[i][j] = emptyCode;
    }

    synchronized void tearDown(int row, int col) {
    // Tear down a wall, unless doing so will form a loop.  Tearing down a wall
        //ฉีกลงผนังเว้นแต่ทำเช่นนี้จะฟอร์มวง น้ำตาไหลลงมาที่ผนัง
    // joins two "rooms" into one "room".  (Rooms begin to look like corridors
        //รวมสองห้อง""เข้าห้อง"" (ห้องเริ่มมีลักษณะทางเดิน
    // as they grow.)  When a wall is torn down, the room codes on one side are
        //ที่พวกเขาเติบโต . ) เมื่อผนังถูกดึงขาดลงรหัสห้องด้านหนึ่งเป็น
    // converted to match those on the other side, so all the cells in a room
        //แปลงตรงกับด้านอื่น ๆ เพื่อให้ทุกเซลล์ในห้อง
    // have the same code.   Note that if the room codes on both sides of a
        //มีรหัสเดียวกัน ทราบว่าหากรหัสห้องทั้งสองด้านของ
    // wall already have the same code, then tearing down that wall would
        //ผนังมีรหัสเดียวกันนั้นฉีกลงผนังที่จะ
    // create a loop, so the wall is left in place.
        //สร้าง loop ดังนั้นผนังเหลืออยู่ในสถานที่
            if (row % 2 == 1 && maze[row][col-1] != maze[row][col+1]) {
                       // row is odd; wall separates rooms horizontally
                //แถวเป็นคี่; ห้องแยกผนังแนวนอน
                fill(row, col-1, maze[row][col-1], maze[row][col+1]);
                maze[row][col] = maze[row][col+1];
                putSquare(row,col,emptyCode);
                try { wait(speedSleep); }
                catch (InterruptedException e) { }
             }
            else if (row % 2 == 0 && maze[row-1][col] != maze[row+1][col]) {
                      // row is even; wall separates rooms vertically
                //row is even; wall separates rooms vertically
                fill(row-1, col, maze[row-1][col], maze[row+1][col]);
                maze[row][col] = maze[row+1][col];
                putSquare(row,col,emptyCode);
                try { wait(speedSleep); }
                catch (InterruptedException e) { }
             }
    }

    void fill(int row, int col, int replace, int replaceWith) {
           // called by tearDown() to change "room codes".
        //เรียก tearDown () การเปลี่ยนรหัสห้อง""
        if (maze[row][col] == replace) {
            maze[row][col] = replaceWith;
            fill(row+1,col,replace,replaceWith);
            fill(row-1,col,replace,replaceWith);
            fill(row,col+1,replace,replaceWith);
            fill(row,col-1,replace,replaceWith);
        }
    }

    boolean solveMaze(int row, int col) {
            // Try to solve the maze by continuing current path from position
        //พยายามแก้ปัญหาเขาวงกตอย่างต่อเนื่องโดยในปัจจุบันเส้นทางจากตำแหน่ง
            // (row,col).  Return true if a solution is found.  The maze is
        //(แถว, col) กลับจริงถ้าแก้ปัญหาที่พบ เขาวงกตเป็น
            // considered to be solved if the path reaches the lower right cell.
        //พิจารณาที่จะแก้ไขหากเส้นทางถึงเซลล์ขวาล่าง
         if (maze[row][col] == emptyCode) {
             maze[row][col] = pathCode;      // add this cell to the path
             //เพิ่มเซลล์นี้เส้นทาง
             if (checkStatus() == TERMINATE)
                return false;
             putSquare(row,col,pathCode);
             if (row == rows-2 && col == columns-2)
                 return true;  // path has reached goal
             //เส้นทางได้ถึงเป้าหมาย
             try { Thread.sleep(speedSleep); }
             catch (InterruptedException e) { }
             if ( (solveMaze(row-1,col) && checkStatus() != TERMINATE)  ||
                     // try to solve maze by extending path
                     //พยายามแก้ปัญหาโดยการขยายเส้นทางเขาวงกต
                  (solveMaze(row,col-1) && checkStatus() != TERMINATE)  ||
                  //    in each possible direction
                  //ทิศทางในการไปแต่ละ
                  (solveMaze(row+1,col) && checkStatus() != TERMINATE)  ||
                  solveMaze(row,col+1) )
                return true;
             if (checkStatus() == TERMINATE)
                return false;
          // maze can't be solved from this cell, so backtract out of the cell
             //เขาวงกตไม่สามารถแก้ไขได้จากเซลล์นี้เพื่อ backtract ออกจากเซลล์
             maze[row][col] = visitedCode;  // mark cell as having been visited
             //เซลล์ทำเครื่องหมายว่าได้รับชม
             putSquare(row,col,visitedCode);
             synchronized(this) {
               try { wait(speedSleep); }
               catch (InterruptedException e) { }
             }
             if (checkStatus() == TERMINATE)
                return false;
          }
          return false;
    }

}




Tag : JavaScript, Win (Windows App), Class Library, C#, J#







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-08-31 11:48:34 By : นู๋มิ้น View : 4354 Reply : 3
 

 

No. 1



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


java ชัดๆ เอาโค้ดเขามาเหรอครับ

แล้วต้องอธิบายให้อาจารย์ฟังด้วยใช่ไหมว่าใช้ algotihm แบบไหนใช่ไหมครับ

แล้วทำไมไม่ได้ tag bb ให้คนอื่นเขาอ่านง่ายๆ ล่ะครับ ใช้ tag c# ก็ได้






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-31 13:23:30 By : tungman
 


 

No. 2

Guest


ใช่ค่ะๆจาวา..อิอิ

แล้วทำไงหรอค่ะ tag c# อะไรเนี่ย

งงเลยอ่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-31 13:55:30 By : นู๋มิ้น
 

 

No. 3

Guest



แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-19 11:10:32 By : ฟก
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ช่วยหน่อยนะคะ อันนี้เป็นเกม Maze (เขาวงกต)อยากให้ช่วยอธิบายอัลกอลิทึมให้หน่อยค่ะว่าใช้อัลกอลิทึมอะไรในส่วนไหนของโปรแกรม
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่