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

ارجوووكم مساعدة في المربعات

مغلق
بدأه love247_jo في 24 يونيو 2007 · 4 رد · 1,263 مشاهدة · في OpenGL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مرحبا كيف الاحوال؟ سأكون شاكرة لكل من يساعدني :) انا اخذ مادة (++ computer graphics with openGL (c منذ اسبوع، والا ن مطلوب ان اصمم لوح شطرنج (فقط مربعات بدون اللاعبين) ثنائي الابعاد 2D ، ولكنني بالكاد اعرف الاساسيات.

انا استطيع ان ارسم مربع واحد، ولكن كيف سارسم باقي المربعات وانا اصلا لا اعرف كيف احدد الاحداثيات او مواقع المربعات... اظن يجب ان اضع loop ولكن كيف؟ وأين؟ ساعدوني ..... هل رأيتم كود جاهز لتصميم ذلك؟

تم تعديل هذه المشاركة بواسطة love247_jo في 24 يونيو 2007 في 21:07

#2

باستخدام for داخل for .. الاولى للصف والاخرى للعمود ..

for(int i=0;i<10;i++)
{
for(int j=0;j<10;j++)
{
		x+=20; 
		  glLoadIdentity();
		 glTranslatef(x,y,0);
		 glBegin(....);
		 .
		 .
		 glEnd();
}
y+=10;
}

هذا كفكرة عامة .. اذا لم تتضح الفكرة ممكن نضيف مثال اكثر تفصيل في الOpenGL

...

تم تعديل هذه المشاركة بواسطة الشمري في 24 يونيو 2007 في 21:49

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#3

كيف سأحدد احداثيات المربعات ان تكون بجانب بعضها؟ وموقعها؟

#4

هذه طريقة قمت بها في إمتحان مختبر الجرافيكس

و تقتضي هذه الطريقة بتحديد حجم الشاشة التي ستظهر و وقسمتها إلى 32 مربع كل واحد 12 Pixel Size

و قمت بتحديد المربع الذي أقوم بالضغط عليه عن طريق أخد Pixels لمكان الماوس و تحويلها إلى مكان المربع المطلوب

و هذه العملية سهلة:

int mycolumn=(int)x/12;
//هذه تأتيني ب columnIndex

int myrow=(int)((384-y)/12);
//هذه تأ تيني ب RowIndex

و لرسم المربع المطلوب

glRecti(column*12,row*12,(column*12)+12,(row*12)+12);

تم تعديل هذه المشاركة بواسطة Final Heaven في 25 يونيو 2007 في 16:35

و كن فتى في ذرى العلياء همّته

يسمو بغاياته حتى على زحل

موقع خاص بي

My Website

قمت بتصميم لعبة بسيطة بإستخدام اللغة الجميلة الجافا

Plane Fighter Game

برنامج جميل بلغة الجافا يساعد على تنظيم المشاكل

The TS Organizer

#5

يتم تعيين الإحداثيات ( لنظام الثنائي الابعاد عن طريق الدالة glOrtho )

	gluOrtho2D(0,200,0,200);

البارمتر الاول والثاني ( يمين ويسار ) .

البارمتر الثالث والرابع ( أسفل و أعلى ) .

هنا .. جهة اليمين == صفر .

جهة اليسار = 200

أسفل النافذة = 0 .

أعلى النافذة = 200

بالتالي لو قلت أرسم نقطة في الموقع ( 100 , 100 ) سيتم رسمها في منتصف النافذة .

هذا فيما يتعلق بالاحداثيات .,

أما مسألة الرسم والامور الاخرى .. فراجعي ما قاله الزميل Final Heaven

فاذا كنت فهمت السؤال جيدا ,,, فهذا كود ::: ( لم أضمنه التلوين ( glColor ) ) . قد قمت باعداده سابقا .

#include<windows.h>
#include<gl/glut.h>




void reshape(int width,int height)

{
	if(height=0)
		height=1;

	glViewport(0,0,(GLsizei)400,(GLsizei)300);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluOrtho2D(0,200,0,200);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();

}

void initGL()
{
}


float x=20,y=20;

void render()
{
	glClearColor(0.0f,0.0f,0,0.0f);
	glClear(GL_COLOR_BUFFER_BIT );
 	glLoadIdentity();
	glColor3f(1,1,1);
	for(int i=0;i< 8;i++)
	{
		for(int j=0;j<8; j++)
		{
			glLoadIdentity();
			glTranslatef(x,y,0);
			glRectf(0,0,20,20);
			x+=21;
		}
		x=20;
		y+=21;

	}
	glutSwapBuffers();
}

//*************************************************//
int main(int argc, char** argv)
{
	glutInit(&argc,argv);
	glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE  );
	glutInitWindowPosition(50,50);
	glutInitWindowSize(400,300);
	glutCreateWindow("  ");
	initGL();

	glutDisplayFunc(render); 
	glutReshapeFunc(reshape);
	glutMainLoop();
 return 0;
}

تم تعديل هذه المشاركة بواسطة الشمري في 25 يونيو 2007 في 22:22

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

هذا الموضوع مغلق.

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