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

سوال عن كيفية استعمال ال Keylistenr

بدأه mr.beshoy في 7 ديسمبر 2008 · 31 رد · 2,413 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#26

اولا الفكرة الى شرحتها مظبوطة و شغالة عال العال

أما المشكلة فى الجزء الى انا عامل عليه كومنت . و شرحت فى الصفحة السابفة قصدى بكل سطر فى هذا الجزء الذى عليه كومنت و ممكن اقول قصدى تانى إذا لم يكن مفهوم

و ربنا يبعتلك الجافا و ياريت كمان تروح على جهازك الأصلى لأن

جهاز بدون جافا مش جهاز :lol:

#27

أضمن لك أن الكود الذي تحدثنا عنه فيه مشكلة :P

هل الحواجز لديك لها شكل معين

أقصد هل الحاجز موجود في كل مكان؟

أم أن له توزيع معين

بمعنى مربع فارغ مربع حاجز وهكذا؟

أم أن الأمر بدون ضوابط

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#28

لا طبعا ً له توزيع معين .... تارك بين كل حاجز و الآخر مسافة 40

و بعدين أنا مجرب الكود و شغال 10 على 10 اما الجزء الى عليه كومنت الى عينى طلعت فيه إلى الآن لم نتكلم عليه

و أنا مُصر أكمل على الطريقة دى بس مستنيك تشوفها

الله يكون فى عو نك مستحملنى أزااى ؟؟!!

شكرا

#29

السلام عليكم

أولاً المنطق غير صحيح لهذا ظننت أنا أن هناك مشكلة

لأن هذا التكرار ليس سوى عبارة عن جملة if مقنعة

جرب استبدال while بـ if وسترى ذلك بنفسك

أتمنى لو تقوم بإنزال كل الفئات بصيغتها النهائية

لأني التبس علي الأمر

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#30

أهو يا باشا الversion الى اتوصلتله

و إلى الآن لم ترد على الجزء الى عليه كومنت منتظر ردك بفارغ الصبر

import javax.swing.JFrame;

public class Mainprogram extends JFrame {

	private MainBord mainbord;

	public Mainprogram() {
		mainbord = new MainBord();
		addKeyListener(mainbord);
		getContentPane().add(mainbord);
	}

	public static void main(String[] args) {
		JFrame frame = new Mainprogram();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(800, 900);
		//frame.setResizable(false);
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
	}
}

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class MainBord extends JPanel implements KeyListener {

	private BufferedImage bord;
	private JLabel bomabr_label;
	private JPanel bombar_panel;
	private ImageIcon divider_icon,  bombar_icon,  bomb_icon;
	private Graphics g;
	private int x;
	private int y;
	private int dividerSize = 40;
	private int[][] index = new int[9][17];

	public MainBord() {
		drawimage();
		drawComponents();
	}

	private void drawComponents() {
		divider_icon = new ImageIcon(getClass().getResource("wall.gif"));
		bombar_icon = new ImageIcon(getClass().getResource("bombar.gif"));
		bomb_icon = new ImageIcon(getClass().getResource("bomb.gif"));
		bombar_panel = new JPanel();
		bombar_panel.setPreferredSize(new Dimension(bombar_icon.getIconWidth() + 10, bombar_icon.getIconHeight() + 10));
		x = (bord.getWidth() - (divider_icon.getIconWidth() + dividerSize) * 8) / 2;
		y = (bord.getHeight() - (divider_icon.getIconHeight() + dividerSize) * 8) / 2;
		for (int i = 0; i < 8; ++i) {
			for (int j = 0; j < 8; ++j) {
				divider_icon.paintIcon(this, g, (divider_icon.getIconWidth() + dividerSize) * i + x, (divider_icon.getIconHeight() + dividerSize) * j + y);
			}
		}
		bomabr_label = new JLabel(bombar_icon);
		bombar_panel.add(bomabr_label);


	}

	private void drawimage() {

		bord = new BufferedImage(800, 900, BufferedImage.TYPE_INT_RGB);
		g = bord.getGraphics();
		g.setColor(Color.ORANGE);
		g.fillRect(0, 0, 1000, 1000);

	}

	@Override
	public void paint(Graphics g) {
		super.paint(g);
		g.drawImage(bord, 0, 0, this);
		bombar_icon.paintIcon(this, g, x - bombar_icon.getIconWidth(), y - bombar_icon.getIconHeight());
	}

	public void keyTyped(KeyEvent e) {
	}

	@Override
	public void keyPressed(KeyEvent e) {

		switch (e.getKeyCode()) {
			case KeyEvent.VK_RIGHT:
				x += 5;
				while (x > (divider_icon.getIconWidth() + dividerSize) * 9.1) {
					x = (int) ((divider_icon.getIconWidth() + dividerSize) * 9.1);
				}
//				for (int i = 0; i < 8; ++i) {
//					for (int j = 0; i < 16; ++j) {
//						if (index[j] % 2 == 0) {
//							index[j] = divider_icon.getIconWidth() * index[j];
//							if (x== index[j]) {
//								x -= index[j];
//							}
//							if (x != index[j]) {
//								x += dividerSize;
//							}
//						}
//					}
//				}

					break;



		case KeyEvent.VK_LEFT:
				x -= 5;
				while (x < (bord.getWidth() - (divider_icon.getIconWidth() + dividerSize) * 8) / 2) {
					x = (bord.getWidth() - (divider_icon.getIconWidth() + dividerSize) * 8) / 2;

				}
				break;
			case KeyEvent.VK_UP:
				y -= 5;
				while (y < (bord.getHeight() - (divider_icon.getIconHeight() + dividerSize) * 8) / 2) {
					y = (bord.getHeight() - (divider_icon.getIconHeight() + dividerSize) * 8) / 2;
				}

				break;
			case KeyEvent.VK_DOWN:
				y += 5;
				while (y > (divider_icon.getIconHeight() + dividerSize) * 9.5) {
					y = (int) ((divider_icon.getIconHeight() + dividerSize) * 9.5);
				}

				break;
			case KeyEvent.VK_SPACE:
				int bomb_x = x - bombar_icon.getIconWidth();
				int bomb_y = y - bombar_icon.getIconHeight();
				bomb_icon.paintIcon(this, g, bomb_x, bomb_y);
				break;
		}
		repaint();
	}

	public

	 void keyReleased(KeyEvent e) {
	}
}
#31

سلام شباب

انا مش متخيل ان لا أحد من الخبراء يريد المساعدة

عموما ً حبيت اعرض فكرة أخرى هى منطقية و لكن مش شغالة نظرا لخطا رياضى بها

الجزئية الى عليها كومنت فوق ( الخاصة بمنع تحريك اللاعب على الحواجز ) طريقه أخرى لها و ادق من السابقة

int[][] player_position = new int[8][16];
				for (int i = 0; i < 8; ++i) {
					for (int j = 0; j < 16; ++j) {
						if (index[j] % 2 != 0) {
							index[j] = divider_icon.getIconWidth();
						} else if (player_position[j] % 2 == 0) {
							player_position[j] = bombar_panel.getX();
						}
						if (player_position[j] + index[j] + x == divider_icon.getIconWidth()) {
							player_position[j] -= index[j] + x;
						}
					}
				}
#32

بالنسبة لفكرتك فهمت عليك أنتا عاوز تعمل ايه

أنتا الشكل تبع المربعات عند ثابت

وإذا كان المربع زوجي هيكون حاجز

وإلا هيكون مش حاجز

علشان تعمل كده

خد باقي قسمة المكان الحالي على طول المربع

وبعدين اطرحه من المكان الحالي

بعده كده افحص إذا كان الناتج بيقبل القسمة على 2

يبقى ما تخليهوش يتحرك

وإلا ما فيش مشاكل

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…