#1
|
||||
|
||||
![]() السلام عليكم ورحمة الله وبركاته آمممم انا جايتكم وكلي امل انكم تساعدوني في القرافكس باستخدام جافا 2D / انا توني مبتدئة في الجافا وعندي مشروع لعبة اكس او ( TicTacToe ) استخدمت applet و panel و paintComponent و النيلة MouseListener الكود شغال ومزبوط تمام التمام / بس الدكتورة عساها اللي مني قايله طلبت تعديل :nosweat: انه لمن المستخدم يكبر شاشة الرن او يصغرها المفروض يتغير معاه ابعاد الرسمة ويقدر يلعب بالحجم اللي هو يبغاه يعني خاصية المرونة استعملت الميثودات this.getWidth() و this.getHieht() ل panel وتعدلت الرسمة / بس باقي منطقة استجابة ال MouseListener مهي معرفه غير في الركن الاعلى على اليمين .. يعني الركن الافتراضي للعبة ومهما المستخدم غير حجم الشاشة وتغيرت الابعاد تظل المنطقة المعرفه نفسها الركن الايمن تعبت احوس فيه شوي وانجلط :crazy::icon1366: وقلت مالي غيركم اتمنى اني القى الحل عندكم / وكمان فيه سؤال ثاني :nosweat: لو ابغى ادرج صورة واخليها هي خلفية للعبة كيف الطريقة لانه setBackgraound اللي اعرفها ماتستقبل غير اوبجكت من نوع Color ولمن بحثت في النت لقيته مستخدم اكواد غريبة فقلت لو احد يعرف كيف اخلي الخلفية صورة ع مستوى الكود حقي بدون تعقيد لان بدري ع الاحتراف :nosweat: / ومشكوووووووورين مقدما :) الكود رمز Code: import java.awt.Canvas; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.util.Random; import javax.swing.JFrame; import java.awt.*; import java.awt.event.*; import java.awt.image.*; import javax.swing.*; import java.awt.font.*; import java.awt.geom.*; import java.io.*; import java.net.URL; import javax.imageio.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; /** * Classic Tic Tac Toe example in java. * Uses Java GUI * * @author WolfCoder * @author 11-08-2007 */ public class TicTacToe extends JApplet { public static void main(String[] args) { // Create the window for tic tac toe JFrame frame = new JFrame(); TicTacToe applet = new TicTacToe(); frame.setTitle("Tic Tac Toe"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E); // Add the game board GameBoard gameBoard = new GameBoard(); // Pack and show applet.init(); frame.getContentPane().add(applet); frame.pack(); frame.setVisible(true); } public void init() { JPanel panel = new GameBoard (); getContentPane().add(panel); } private static class GameBoard extends JPanel { private static final int EMPTY = 0,X_PIECE = 1,O_PIECE = 2; int[][] gameGrid = new int[3][3]; // Game grid boolean xTurn; // Is it X's turn? Random random; // Random generator boolean gameRunning; // Is a game in progress? int gameResult; // Result of game int x1 = this.getWidth() /5; int y1 = this.getHeight() /5; /** * Handles mouse input in the window. */ private class GameListener implements MouseListener { public void mousePressed(MouseEvent e){} public void mouseClicked(MouseEvent e) { // Check the location of the click int xPos = e.getPoint().x; int yPos = e.getPoint().y; // Check to see if it is in game board if(xPos > x1&& yPos > y1 && xPos < 50+50*3 && yPos < 50+50*3) { // Check to see if game is running if(gameRunning == false) { // New game wipeGrid(); gameRunning = true; repaint(); return; } // Check for an empty place if(gameGrid[xPos/50-1][yPos/50-1] != EMPTY) return; // Not empty, can't place piece // Place a piece for the current turn and then alternate if(xTurn) { gameGrid[xPos/50-1][yPos/50-1] = X_PIECE; xTurn = false; } else { gameGrid[xPos/50-1][yPos/50-1] = O_PIECE; xTurn = true; } // Check for a winning game gameResult = gameOver(); if(gameResult != 0) { // Game has ended! gameRunning = false; } // Cause an update repaint(); } } public void mouseReleased(MouseEvent e){} public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} } /** * Creates a new game board. */ public GameBoard() { // Set the size and background color setPreferredSize(new Dimension(256,256)); setBackground(Color.WHITE); // Add mouse listener addMouseListener(new GameListener()); // Create a new random random = new Random(); // Wipe grid wipeGrid(); // Set game status gameRunning = true; } /** * Clears the game board of all pieces. * This function also sets a random turn for the next player. */ public void wipeGrid() { // Wipes the entire grid for(int y = 0;y < 3;y++) for(int x = 0;x < 3;x++) gameGrid[x][y] = EMPTY; // Set player if(random.nextInt(100) < 50) xTurn = true; else xTurn = false; } /** * Checks to see if the game is over. * * @return If the game is over or not. 0 = Not over, 1 = X wins, 2 = O wins, 3 = tie */ int gameOver() { // Check for a match for(int x = 0;x < 3;x++) // Rows if(gameGrid[x][0] == gameGrid[x][1] && gameGrid[x][1] == gameGrid[x][2]) return gameGrid[x][0]; for(int y = 0;y < 3;y++) // Columns if(gameGrid[0][y] == gameGrid[1][y] && gameGrid[1][y] == gameGrid[2][y]) return gameGrid[0][y]; // Diagonal 1 if(gameGrid[0][0] == gameGrid[1][1] && gameGrid[1][1] == gameGrid[2][2]) return gameGrid[0][0]; if(gameGrid[2][0] == gameGrid[1][1] && gameGrid[0][2] == gameGrid[1][1]) return gameGrid[2][0]; // Check for tie for(int y = 0;y < 3;y++) for(int x = 0;x < 3;x++) if(gameGrid[x][y] == 0) return 0; // Not a tie because there is an empty space // The game is a tie return 3; } /** * Paints the game board. */ public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D) g; int x1 = this.getWidth() /5; int y1 = this.getHeight() /5; Font font = new Font("Arial", Font.BOLD, x1 / 2); FontRenderContext fr = g2.getFontRenderContext(); // Clear old stuff out g2.clearRect(0,0,getWidth(),getHeight()); // Draw lines g2.setColor(Color.BLACK); g2.drawLine(x1,2*y1,4*x1,2*y1); g2.drawLine(x1,3*y1,4*x1,3*y1); g2.drawLine(2*x1,y1,2*x1,4*y1); g2.drawLine(3*x1,y1,3*x1,4*y1); // Draw pieces for(int y = 0;y < 3;y++) { for(int x = 0;x < 3;x++) { if(gameGrid[x][y] == X_PIECE) { GlyphVector gv1 = font.createGlyphVector(fr,"X"); Shape glyph1 = gv1.getOutline(x1+x*x1+x1/3,y1+y*y1+y1-y1/5); g2.setColor(Color.magenta); g2.fill(glyph1); } if(gameGrid[x][y] == O_PIECE) { GlyphVector gv2 = font.createGlyphVector(fr,"O"); Shape glyph2 = gv2.getOutline(x1+x*x1+x1/3,y1+y*y1+y1-y1/5); g2.setColor(Color.black); g2.fill(glyph2); } } } // Check for turns g2.setColor(Color.BLACK); if(gameRunning) { // Turn message Font font1 = new Font("Arial", Font.BOLD, x1/4 ); g2.setFont(font1); if(xTurn) g2.drawString("It is player X's turn.",x1-10,y1-10); else g2.drawString("It is player O's turn.",x1-10,y1-10); } else { Font font1 = new Font("Arial", Font.BOLD, x1/3 ); g2.setFont(font1); // End message if(gameResult == X_PIECE) g2.drawString("Player X won!",x1+x1/2,y1-y1/3); if(gameResult == O_PIECE) g2.drawString("Player O won!",x1+x1/2,y1-y1/3); if(gameResult == 3) g2.drawString("Tie game!",x1+x1/2,y1-y1/3); // Prompt message Font font3 = new Font("Arial", Font.BOLD, x1/6 ); g2.setFont(font3); g2.drawString("Click to start a new game.",x1-x1/2,y1*4+y1/2); } } } /** * Starts the game of Tic Tac Toe. * @param args This is ignored. */ } أكثر... |
مواقع النشر (المفضلة) |
|
|
![]() |
||||
الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
ممكن جافا | RSS | Arabic Rss | 0 | 02-17-2011 10:40 PM |
مطلوب جافا | RSS | Arabic Rss | 0 | 09-07-2010 05:24 AM |
برنامج الشهير جافا | RSS | Arabic Rss | 0 | 05-30-2010 01:44 AM |
مشاريع إسرائيلية على أوقاف يافا | المجاوشي | المجاوشي للأخبار العامه والسياسية والرياضية | 0 | 11-21-2009 05:11 PM |
شفيق الحوت.. من يافا بدأ المشوار | المجاوشي | المجاوشي للأخبار العامه والسياسية والرياضية | 0 | 10-21-2009 01:48 PM |
|