CodeGym /جاوا بلاگ /Random-SD /CodeGym تي رانديون سيڪشن: واقعا سنڀالڻ
John Squirrels
سطح
San Francisco

CodeGym تي رانديون سيڪشن: واقعا سنڀالڻ

گروپ ۾ شايع ٿيل
CodeGym کان "راندين" ھڪڙو نئون سيڪشن آھي جنھن ۾ وڏين دلچسپ ڪمن سان گڏ آھي جتي توھان ٺاھيو ٿا پنھنجا ورجن مشهور رانديون جا. اهو سادو آهي: هر راند جو منصوبو ذيلي ڪمن ۾ ورهايل آهي. انھن کي ھڪڙي ھڪڙي مڪمل ڪريو ۽ راند ٿي چڪو آھي. توھان ان کي سماجي نيٽ ورڪن تي حصيداري ڪري سگھو ٿا ۽ پنھنجي دوستن کي راند ڪرڻ جي دعوت ڏيو. CodeGym تي "راندين" سيڪشن: واقعا سنڀالڻ - 1هن آرٽيڪل ۾، اسان تفصيل سان بيان ڪنداسين ايونٽ جي سنڀال جا طريقا راندين کي لکڻ لاءِ استعمال ڪيا ويا.

1. مائوس سان ڪم ڪرڻ

راند انجڻ مائوس سان ڪم ڪرڻ لاء ٻه طريقا آهن:
  • void onMouseLeftClick(int x, int y);

  • void onMouseRightClick(int x, int y);

توھان صرف انھن طريقن کي پنھنجي ڪلاس ۾ بيان ڪريو جيڪي ورثي ۾ مليا آھن Game، ۽ انھن کي شامل ڪريو جيڪو توھان چاھيو ٿا. راند انجڻ انهن کي سڏيندو جڏهن صارف مائوس بٽڻ تي ڪلڪ ڪندو.
  1. onMouseLeftClick(int x, int y)- انجڻ طرفان سڏيو ويندو آهي جڏهن کاٻي مائوس بٽڻ تي ڪلڪ ڪيو ويندو آهي. ان جا پيرا ميٽرز راند جي ميدان جي سيل جا همراه آهن جتي ڪلڪ ڪيو ويو. مٿين کاٻي سيل ۾ همراهن (0, 0) آهن. توھان کي استعمال ڪرڻ لاء ھن طريقي کي ختم ڪرڻ جي ضرورت آھي.

  2. onMouseRightClick(int x, int y)- سڏيو ويندو آهي جڏهن صحيح مائوس بٽڻ تي ڪلڪ ڪيو ويندو آهي. اهو طريقو هن onMouseLeftClick(int x, int y)طريقي سان ڪم ڪري ٿو.

هتي انهن طريقن کي استعمال ڪرڻ جو هڪ مثال آهي:
import com.codegym.engine.cell.Color;
import com.codegym.engine.cell.Game;
import com.codegym.engine.cell.Key;

public class MySuperGame extends Game {
    @Override
    public void initialize() {
        // Set the size of the playing field to 3x3
        setScreenSize(3, 3);

        // Paint the playing field white
        for (int x = 0; x < 3; x++) {
            for (int y = 0; y < 3; y++) {
                setCellColor(x, y, Color.WHITE);
            }
        }
    }

    @Override
    public void onMouseLeftClick(int x, int y) {
        // Set "X" in the cell where the left mouse click occurred
        setCellValue(x, y, "X");
    }

    @Override
    public void onMouseRightClick(int x, int y) {
        // Clear the cell where the right mouse click occurred
        setCellValue(x, y, "");
    }
}

2. ڪيبورڊ سان ڪم ڪرڻ

راند انجڻ کي ڪيبورڊ سان ڪم ڪرڻ لاء ٻه طريقا آهن:
  • void onKeyPress(Key key);

  • void onKeyReleased(Key key);

جيڪڏھن توھان چاھيو ٿا ته ڪجھھ ٿئي جڏھن استعمال ڪندڙ ڪيچي کي دٻائي، انھن طريقن کي پنھنجي ڪلاس ۾ بيان ڪريو جيڪي راند کي ورثي ۾ رکن ٿا، ۽ انھن ۾ پنھنجو ڪوڊ شامل ڪريو. راند انجڻ انهن کي سڏيندو جڏهن صارف کي دٻايو يا جاري ڪري ٿو.
  1. onKeyPress(Key key)- سڏيو ويندو آهي جڏهن ڪو به دٻايو ويندو آهي. اهم پيٽرولر کي دٻايو ويو آهي (يا Key.UNKNOWN).

  2. onKeyReleased(Key key)- سڏيو ويندو آهي جڏهن ڪا چاٻي جاري ڪئي وئي آهي. اهم پيٽرولر سان لاڳاپيل ڪي (يا Key.UNKNOWN) آھي.

هتي انهن طريقن کي استعمال ڪرڻ جو هڪ مثال آهي:
import com.codegym.engine.cell.Color;
import com.codegym.engine.cell.Game;
import com.codegym.engine.cell.Key;

public class MySuperGame extends Game {
    @Override
    public void initialize() {
        // Set the size of the playing field to 3x3
        setScreenSize(3, 3);

        // Paint the playing field white
        for (int x = 0; x < 3; x++) {
            for (int y = 0; y < 3; y++) {
                setCellColor(x, y, Color.WHITE);
            }
        }
    }

    @Override
    public void onKeyPress(Key key) {
        // When the space bar is pressed, the center cell turns yellow
        if (key == Key.SPACE) {
            setCellColor(1, 1, Color.YELLOW);
        }
    }

    @Override
    public void onKeyReleased(Key key) {
        // When the space bar is released, the center cell changes back to white
        if (key == Key.SPACE) {
            setCellColor(1, 1, Color.WHITE);
        }
    }
}
اهم! راند انجڻ جي موجوده ورزن ۾، ڪيئي قسم ۾ نو قدرن جو محدود سيٽ آھي:
قدر استعمال ڪندڙ کي دٻايو
ڪي. ENTER استعمال ڪندڙ انٽر کي دٻايو
Key.ESCAPE استعمال ڪندڙ دٻايو Esc
چاٻي. PAUSE استعمال ڪندڙ کي دٻايو روڪيو
ڪي. اسپيس استعمال ڪندڙ اسپيس کي دٻايو
چاٻي. کاٻي استعمال ڪندڙ کي دٻايو کاٻي تير بٽڻ
چاٻي.حق استعمال ڪندڙ ساڄي تير جي بٽڻ کي دٻايو
ڪي. يو. پي استعمال ڪندڙ مٿي تير واري بٽڻ کي دٻايو
چاٻي. هيٺ استعمال ڪندڙ ھيٺ ڏنل بٽڻ کي دٻايو
چاٻي. UNKNOWN استعمال ڪندڙ مٿي ڏنل کان سواء ٻيو ڪو دٻايو

3. ٽائمر سان ڪم ڪرڻ

ڪيتريون ئي رانديون حقيقي وقت ۾ ٿين ٿيون، يعني جيتوڻيڪ صارف ڪجھ به نه ٿو ڪري، واقعا اڃا به راند ۾ واقع ٿين ٿا. توهان کي اهڙيون رانديون لاڳو ڪرڻ جي قابل ڪرڻ لاءِ، اسان گيم انجڻ ۾ ٽائمر شامل ڪيو. اهو ڪجهه هن طرح ڪم ڪري ٿو: توهان ٽائمر کي ڦيرايو ۽ ٽائيم وقفو مقرر ڪريو. مثال طور، 500 مليسيڪنڊ. پوء، هر اڌ سيڪنڊ کي راند انجڻ جو onTurnTimer()طريقو سڏيندو آهي. بار بار هميشه لاءِ - جيستائين ٽائمر بند نه ڪيو وڃي. پوء توهان ٽائمر ڪيئن استعمال ڪندا آهيو؟
  1. ٽائمر کي چالو ڪريو.

    هن کي ڪرڻ لاء، اتي هڪ خاص void setTurnTimer(int timeMs)طريقو آهي. اهو طريقو هڪ دليل طور وٺندو آهي ڪالن جي وچ ۾ وقفو milliseconds ۾ (1 millisecond = 1/1000 سيڪنڊ). توهان کي صرف هڪ ڀيرو ان کي ڪال ڪرڻ جي ضرورت آهي، ۽ راند انجڻ onTurn()هر وقت ايم ايس مليس سيڪنڊن جي طريقي سان سڏڻ شروع ڪندو.

  2. onTurn (int) طريقي کي ختم ڪريو.

    هن کي ڪرڻ لاء، توهان کي void onTurn(int step)ڪلاس ۾ هڪ طريقو بيان ڪرڻ جي ضرورت آهي جيڪا وارث آهي Game. هن طريقي کي سڏيو ويندو راند انجڻ. وڌيڪ ڇا آهي، هر ڪال سان راند انجڻ جي طريقي سان گذري ويندي هڪ ترتيب واري سڃاڻپ ڪندڙ ڪال لاءِ (1, 2, 3, …).

  3. ٽائيم بند ڪريو.

    جيڪڏهن ٽائمر جي ضرورت نه آهي، مثال طور، جڏهن صارف راند مڪمل ڪري، توهان ان کي بند ڪري سگهو ٿا. هن کي ڪرڻ لاء، توهان کي صرف طريقو سڏڻ جي ضرورت آهي stopTurnTimer().

  4. ٽائمر کي تيز ڪريو يا تبديل ڪريو.

    ڪجهه راندين ۾، واقعا واقع ٿيڻ جي شرح مسلسل تيز ٿي رهي آهي، تنهنڪري اهو اسان جي ٽائمر کي تيز ڪرڻ (ڪالن جي وچ ۾ وقت گھٽائڻ) آسان ٿيندو. ڪجھ به آسان نه ٿي سگھي ٿو: setTurnTimer(int timeMs)ھڪ ڀيرو ٻيهر نئين قدر سان ڪال ڪريو، ۽ ڪالن جي وچ ۾ وقت onTurn()تبديل ٿي ويندو.

مثال طور:
import com.codegym.engine.cell.Color;
import com.codegym.engine.cell.Game;

public class MySuperGame extends Game {@Override
    public void initialize() {
    	// Create a playing field that is 3 cells x 3 cells
        setScreenSize(3, 3);
        showGrid(false);
        setCellValueEx(1, 1, Color.BLUE, "X", Color.ORANGE, 50);

        setTurnTimer(500);   // Turn on the timer, the interval between calls is 500ms.
    }

    @Override
    public void onTurn(int step) {
        if(step == 100) {
            stopTurnTimer();  // If 100 calls have been made, turn off the timer
        }

        if (step % 2 == 1) {
            // If this call is odd, set the cell background to red
            setCellColor(1, 1, Color.RED);
        }
        else {
            // If this call is even, set the cell background to blue
            setCellColor(1, 1, Color.BLUE);

        }
    }}
هن سادي مثال ۾، اسان هڪ فيلڊ ٺاهيو جيڪو 3 سيلز x 3 سيلز آهي. onTurn()ان کان پوء اسان هڪ ٽائمر شروع ڪيو جيڪو طريقو هر اڌ سيڪنڊ کي سڏيندو . هر اڌ سيڪنڊ، سيل جو رنگ تبديل ٿيندو، پر ان جو مواد تبديل نه ٿيندو. 50 سيڪنڊن کان پوء، رنگ وڌيڪ تبديل نه ٿيندو. اهو سڀ ڪجهه هاڻي لاء آهي! جيڪڏهن توهان "راندين" سيڪشن بابت وڌيڪ سکڻ چاهيو ٿا، هتي ڪجهه مفيد دستاويز آهن جيڪي مدد ڪري سگهن ٿيون:
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION