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

تبديل اللون

بدأه mem0 في 22 يناير 2009 · 3 رد · 1,409 مشاهدة · في OpenGL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

لدي برنامج رسم لسفينة كبيرة في البحر

أريد تحويره لانميشن

بحيث ان السفينة تسير من اليسار لليمين

عبر هذا الكود

glTranslatef (spin, 0,0);

لكن أريد تغيير خلفية السماء بحيث تتحول من النهار لليل

طبعًا هنا أريد كود تغيير اللون

هل بامكانكم مساعدتي ؟ :)

واعطائي كود للون فقط

أو إذا كانت لديكم فكرة حول هذا الأمر .. سواء شرط أو عمل

هذا رسم السفينة

#include<windows.h>
#include <stdlib.h>
#include<GL/glut.h> 
#include <math.h> // هذه المكتبة ضرورية لرسم الدائرة لأنو فيه دوال رياضية مثل الساين والكوزاين 

float PI=3.14159;
float theta,x,y;

void Init()
{

	glClearColor(0.376470588235 , 0.482352941176 , 0.545098039216 , 1);
	glColor3f(0.0,0.0,1.0);
	glPointSize(2.0);
	glMatrixMode(GL_PROJECTION);

	gluOrtho2D(0.0,100.0,0.0,100.0);
}

void draw()
{
	glClear(GL_COLOR_BUFFER_BIT);

	//-------------------------------

	glColor3f(0.0 , 0.0 , 0.501960784314);
	glBegin(GL_QUADS); //البحر :d
	glVertex2i(0,0);
	glVertex2i(0,25);
	glVertex2i(100,25);
	glVertex2i(100,0);
	glEnd();

	 //-----------------------

	glColor3f(0.0,0.0,0.0);
	glBegin(GL_POLYGON); // - الجزء السفلي رسم السفينة
	glVertex2i(40,25);
	glVertex2i(34,40);
	glVertex2i(71,40);
	glVertex2i(65,25);
	glEnd();

	 //-----------------------
	glColor3f(1.0 , 1.0 , 0.878431372549);
	glBegin(GL_QUADS); // الي في النص
	glVertex2i(43,40);
	glVertex2i(43,44);
	glVertex2i(62,44);
	glVertex2i(62,40);
	glEnd();


	glColor3f(0.0,0.0,0.0);
	glBegin(GL_LINES);
	glVertex2i(43,40);
	glVertex2i(43,44);

	glVertex2f(43,44);
	glVertex2f(62,44);

	glVertex2i(62,40);
	glVertex2i(62,44);
	glEnd();

	 //-----------------------

	 glColor3f(1.0 , 1.0 , 0.878431372549);
	glBegin(GL_QUADS); //الجزء العلوي
	glVertex2i(47,44);
	glVertex2i(47,48);
	glVertex2i(58,48);
	glVertex2i(58,44);
	glEnd();


	  glColor3f(0.0,0.0,0.0);
	glBegin(GL_LINES);
	glVertex2i(47,44);
	glVertex2i(47,48);

	glVertex2i(47,48);
	glVertex2i(58,48);

	glVertex2i(58,48);
	glVertex2i(58,44);

	 glVertex2i(47,44);
	glVertex2i(58,44);
	glEnd();
	//-----------------------

	glColor3ub(255,214,129);
	glBegin(GL_QUADS); //هادي الي تطلع منها الدخان
	glVertex2f(49.0,48.1);
	glVertex2i(49,54);
	glVertex2i(51,54);
	glVertex2f(51.0,48.1);
	glEnd();

	glColor3ub(255,214,129);
	glBegin(GL_QUADS);
	glVertex2f(54.0,48.1);
	glVertex2i(54,54);
	glVertex2i(56,54);
	glVertex2f(56.0,48.1);
	glEnd();


	glColor3f(0.0,0.0,0.0);
	glBegin(GL_QUADS);
	glVertex2f(49.0,52.1);
	glVertex2i(49,54);
	glVertex2i(51,54);
	glVertex2f(51.0,52.1);
	glEnd();

	glColor3f(0.0,0.0,0.0);
	glBegin(GL_QUADS);
	glVertex2f(54.0,52.1);
	glVertex2i(54,54);
	glVertex2i(56,54);
	glVertex2f(56.0,52.1);
	glEnd();

   //----------------------
	//الطيق أو النوافذ ((الدائرية((

	glPushMatrix(); 
	glColor3f(0.0,0.0,0.0); 
	glTranslatef(45.0,42.0,0.0); //لتحديد مكان الدائرة
	glutSolidSphere(1.1,20,10); //لرسم الدويرة
	glPopMatrix();

	glPushMatrix();
	glColor3f(0.0,0.0,0.0);
	glTranslatef(50.0,42.0,0.0);
	glutSolidSphere(1.1,20,10);
	glPopMatrix();

	glPushMatrix();
	glColor3f(0.0,0.0,0.0);
	glTranslatef(55.0,42.0,0.0);
	glutSolidSphere(1.1,20,10);
	glPopMatrix();

	glPushMatrix();
	glColor3f(0.0,0.0,0.0);
	glTranslatef(60.0,42.0,0.0);
	glutSolidSphere(1.1,20,10);
	glPopMatrix();

	//----------------------

	glEnable(GL_LINE_STIPPLE); //رسم الخط المتقطع
	glLineWidth(1.0);
	glColor3f(1.0,1.0,1.0);
	glLineStipple(1, 0x00FF);
	glBegin(GL_LINES);
	glVertex2i(39,28);
	glVertex2i(66,28);
	glEnd();
	glDisable(GL_LINE_STIPPLE);

	//----------------------

	glPushMatrix();
	glColor3f(1.0,1.0,1.0);
	glTranslatef(42.0,36.0,0.0);
	glutSolidSphere(1.3,20,10);
	glPopMatrix();

	glPushMatrix();
	glColor3f(1.0,1.0,1.0);
	glTranslatef(47.0,36.0,0.0);
	glutSolidSphere(1.3,20,10);
	glPopMatrix();

	glPushMatrix();
	glColor3f(1.0,1.0,1.0);
	glTranslatef(52.0,36.0,0.0);
	glutSolidSphere(1.3,20,10);
	glPopMatrix();

	glPushMatrix();
	glColor3f(1.0,1.0,1.0);
	glTranslatef(57.0,36.0,0.0);
	glutSolidSphere(1.3,20,10);
	glPopMatrix();

	glPushMatrix();
	glColor3f(1.0,1.0,1.0);
	glTranslatef(62.0,36.0,0.0);
	glutSolidSphere(1.3,20,10);
	glPopMatrix();

	//---------------------

	glPushMatrix(); 
	glColor3f(1.0,1.0,0.0);
	glTranslatef(20.0,80.0,0.0);
	glutSolidSphere(5.0,20,10);
	glPopMatrix();

  //---------------------

glBegin(GL_POLYGON); //القمر
	glColor3f(1.0,1.0,1.0);
	for(theta=0;theta<=(2*PI);theta+=2*PI/1000)
   {
   x=20+8*cos(theta);
   y=80+8*sin(theta);
   glVertex2f(x,y);
   }
   glEnd();
glFlush();

}

int main(int argc, char** argv)
{
	glutInit(&argc,argv);
	glutInitDisplayMode(GLUT_SINGLE |GLUT_RGB);
	glutInitWindowSize(400,560);
	glutInitWindowPosition(100,100);
	glutCreateWindow("TITANIC");
	Init();
	glutDisplayFunc(draw);
	glutMainLoop();
	return 0;
}

تم تعديل هذه المشاركة بواسطة mem0 في 22 يناير 2009 في 00:54

#2

لم اطبق الكود .. لكن من الممكن تغيير الخلفية .. عن طريق الدالة "

glClearColor(0, 0, 0, 1);

من الممكن وضع شرط .. اذا ضغط المستخدم الى F1 تصير السماء زرقاء .. واذا ضغط F2 تكون السماء سوداء ..

لا أدري هل هذا المطلوب ...

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#3

لا يا أخوي .... ابيه يكون بشكل تلقائي

#4

يمكنك أن تقوم بعمل متغير عام يعبر عن حالة اليوم .. مثلاً إذا كانت قيمته 1 فإنه يعبر عن النهار و إذا كانت 2 يعني العصر و إذا كانت 3 يعني المغرب و إذا كانت 4 يعني العشاء و إذا كانت 5 يعني منتصف الليل و إذا كانت 6 يعني الفجر و إذا كانت 7 يعني الشروق ثم نعود إلى النهار مرة آخرى .. لنفترض أن إسمه H

ثم نقوم بعمل دالة توقيت. أولاً قم بإنشاء دالة عادية void و لها بارامتر واحد من نوع عدد صحيح

void Timer(int iii)
{
H++;
if (H > 8)
H = 1;
switch (H)
{
 case 5:
glClearColor(0,0,0,1);
/*ضع بقية الألوان حسب الحالة*/
}
glutTimerFunc(10000,Timer,0);
/*هنا قمت بعمل التغير كل عشر ثواني و يمكنك أن تعدلها كما تشاء*/
}

ثم يجب عليك أن تقوم بتشغيل المؤقت في البداية عن طريق الأمر

glutTimerFunc(10000,Timer,0);

أرجوا أن أكون قد أفدتك ...

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