سلام يا حلوين
---------------
فاكرينى أنا مين ,ده أن حبيب الملايين
وحشتنى الكتابة فى هذا القسم (( اه ليا ذكريات معاه و مع ناسه )) أيام بقى
-----------------------------------------------------------
فى اواخر شهر 6 و شهر 7 الماضى كان ليَّ منقاشات حادة جداً
فى تصميم برنامج simple word
و لسة مخلصش طبعا
فى شهر 8 بدات فى موضوع الرسام و هنا حصلت مشكلة بسيطة لا أريد تذكرها
على إثرها لم يكتمل وجودى هنا و تغيب الشهر الثامن و التاسع
لكن ليَّ ذكريات طيبة جدا جدا
-----------------------------------------------------------
الجزئية المهة جداً فى الموضوع
----------------------
أقدم خالص شكرى لكل من تعبوا مع
و أقدم لهم خالص اعتذارى إن كنت ضايقتهم
أولاً مستر علاء باشا خلال فترة اقامتى فى مشروع الword
كان له مساعدات يُشكر جداً عليها و ربنا يعوضه و مش ال word فى حاجات تانى حلوة بردو فقط
علاء راجل زى السكر ربنا يزيد حلاوته .......... بس وحياتك أهدى عليا المرة دى
-------------------------
ثانياً مستر عصام : كثيرا ما احتمل اسئلتى الغبية و كان يصحح لى مفاهيمى الخاطئة بجد راجل عسل بجد
و كان ليا معاه حوارات برمجية كثيرة فى الرسام هضع كل ذلك حتى تعم الإفادة
و بدأت معاه فى بداية بسيطة فى موضوع الشطرنج
ربنا يكرمه و يزيد يارب
-----------------------
ثالثاً : مش هقدر أنسى الأخ وجدى هو الى شجعنى انزل فكرة الشطرنج
و زاد من حنينى لقسمى الحبيب و أحبائى
و ليا معاه بردو محادثات علمية شيقة
ربنا يساعده و يزيده يارب
------------------------
من الآخر الثلاثة مبرمجين تركوا بصمة فى عقلى و فى حياتى
عن جد مش بهزر و بتمنى ليهم كل بركة و خير
---------------------------------------------------------------------------------------------------
القسم الثانى طبعاً أنا من النوع الى بحب اخاطر بعمرى فى التعامل مع البرمجيات
ففكرت فى فكرة عمل لعبة الشطرنج
حقيقى مشروع جبار و فكرة حلوة جدا جدا .
أنا بدات فيه و عملت (اللوحة التى سيتم اللعب عليها ثم وضعنا القطع )) - و للأمانة العلمية كنت مواجه مشاكل فى اللوحة و القطع((
مستر عصام)) كلمته و قال لى برمجياً على الطرق السليمة لعملها و افادنى جداً فى هذه القضية
و شكراً لتعبه
----------------------------------------------------------
أولاً أتكلم ببساطة عن تحليل اللعبة
------------------------
1- نريد رسم اللوحة ( 8*8) و تم عملها
2-نريد وضع قطع الفريقين على اللوحة
3-نريد عمل الجورزم لكل قطعة
( pawn عسكرى -rockطبية -knight حصان -bishop الفيل - queen الوزير-king الملك)
---------------------------------------------------------------------------------
أولاً: العسكرى
-----------
أولا فكر العسكرى
---------------
فى بداية اللعبة بيتحرك حركة او حركتين للأمام
و بعد كده لآخر اللعبة يتحرك حركة واحدة فقط للأمام
و لما بيأكل قطعة من الفرق الأخر بيمشى بالقطر و أيضاً حركة واحدة أى مربع واحد بالقطر
معلومة لإخذها فى الإعتبار أثناء البرمجة : العسكرى لا يرجع للوراء . لو تصادف امام العسكرى قطعة ما لا يستطيع الحركة -------------------------------------------------------------------------
فى الأول أعرض لكم الشفيرة المتعلقة برسم اللوحة و وضع القطع :
---------------------------------------------------
ال classالأول---------------
كود
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class BoardGame extends JFrame {
private JPanel boardPanel;
private DrawingBoard drawBoard;
public BoardGame() {
boardPanel = new JPanel();
boardPanel.setLayout(null);
boardPanel.setBackground(Color.BLUE);
drawBoard = new DrawingBoard();
drawBoard.setBounds(boardPanel.getWidth() / 2, boardPanel.getHeight() / 2, 1000, 1000);
drawBoard.setBorder(BorderFactory.createLineBorder (Color.BLACK, 5));
boardPanel.add(drawBoard, BorderLayout.CENTER);
getContentPane().add(boardPanel);
}
public static void main(String[] args) {
BoardGame boardGame = new BoardGame();
boardGame.setDefaultCloseOperation(BoardGame.EXIT_ ON_CLOSE);
boardGame.setSize(new Dimension(600, 300));
BoardGame.setDefaultLookAndFeelDecorated(true);
boardGame.setVisible(true);
boardGame.setExtendedState(MAXIMIZED_HORIZ | MAXIMIZED_VERT);
}
}
[/size][/size]
ال class الثانى
----------------
كود
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
class DrawingBoard extends JPanel {
private int x = 100, y = 60;
private final int WIDTH_SQUARE = 100, HEIGHT_SQUARE = 60, ROW_SQUARES = 8, COL_SQUARES = 8;
private Color firstColor, secondColor;
private ImageIcon[] imagesBlue, imagesRed;
private String[] imageBlueNames = {"blueRock.gif", "blueKnight.gif", "blueBishop.gif",
"blueQueen.gif", "blueKing.gif",
"blueBishop.gif", "blueKnight.gif", "blueRock.gif", "bluePawn.gif"};
private String[] imageRedNames = {"redRock.gif", "redKnight.gif", "redBishop.gif",
"redQueen.gif", "redKing.gif",
"redBishop.gif", "redKnight.gif", "redRock.gif", "redPawn.gif"
};
public DrawingBoard() {
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
drawBoard(g2d);
}
private void drawBoard(Graphics2D g2d) {
drawRows(g2d);
drawColumns(g2d);
colorBord(g2d);
drawPieces(g2d);
}
private void drawRows(Graphics2D g2d) {
for (int i = 0; i < 8; ++i) {
g2d.drawLine(x, (y * i) + HEIGHT_SQUARE, x + 800, (y * i) + HEIGHT_SQUARE);
}
}
private void drawColumns(Graphics2D g2d) {
for (int j = 0; j < 8; ++j) {
g2d.drawLine((x * j) + WIDTH_SQUARE, y, (x * j) + WIDTH_SQUARE, y + 480);
}
}
private void colorBord(Graphics2D g2d) {
int yy = y;
for (int i = 0; i < ROW_SQUARES; i++) {
if (i % 2 != 0) {
firstColor = Color.WHITE;
secondColor = Color.BLACK;
} else {
firstColor = Color.BLACK;
secondColor = Color.WHITE;
}
for (int j = 0; j < COL_SQUARES; ++j) {
if (j % 2 != 0) {
g2d.setColor(firstColor);
g2d.fillRect((WIDTH_SQUARE * j) + 100, yy, WIDTH_SQUARE, HEIGHT_SQUARE);
} else {
g2d.setColor(secondColor);
g2d.fillRect((WIDTH_SQUARE * j) + 100, yy, WIDTH_SQUARE, HEIGHT_SQUARE);
}
if (j == 7) {
yy += HEIGHT_SQUARE;
}
}
}
}
private void drawPieces(Graphics2D g2d) {
int x1 = (ROW_SQUARES * WIDTH_SQUARE), y1 = (COL_SQUARES * HEIGHT_SQUARE);
int x2 = (ROW_SQUARES * WIDTH_SQUARE), y2 = HEIGHT_SQUARE;
imagesBlue = new ImageIcon[imageBlueNames.length];
imagesRed = new ImageIcon[imageRedNames.length];
for (int i = 0; i < imageBlueNames.length; ++i) {
imagesBlue[i] = new ImageIcon(getClass().getResource(imageBlueNames[i]));
if (imagesBlue[i] != imagesBlue[8]) {
g2d.drawImage(imagesBlue[i].getImage(), x1, y1, this);
} else if (imagesBlue[i] == imagesBlue[8]) {
int xBluePawn = ROW_SQUARES * WIDTH_SQUARE;
for (i = 0; i < 8; ++i) {
g2d.drawImage(imagesBlue[8].getImage(), xBluePawn, y1 - HEIGHT_SQUARE, this);
xBluePawn -= WIDTH_SQUARE;
}
}
imagesRed[i] = new ImageIcon(getClass().getResource(imageRedNames[i]));
if (imagesRed[i] != imagesRed[8]) {
g2d.drawImage(imagesRed[i].getImage(), x2, y2, this);
} else if (imagesRed[i] == imagesRed[8]) {
int xRedPawn = ROW_SQUARES * WIDTH_SQUARE;
int yRedPawn = HEIGHT_SQUARE;
for (i = 0; i < 8; ++i) {
g2d.drawImage(imagesRed[8].getImage(), xRedPawn, yRedPawn + HEIGHT_SQUARE, this);
xRedPawn -= WIDTH_SQUARE;
}
}
x1 -= WIDTH_SQUARE;
x2 -= WIDTH_SQUARE;
}
}
}
[size="5"][size="3"]
هذه هى الخطوة الاولى
فى لعبتنا
-----------------------------
للمزيد من مواضيعي