السلام عليكم ورحمة الله وبركاته
لدي لعبة عبارة عن كرة ( لكن الكرة مربع ) أريد أن أعدلها لدائرة لكن المشكلة هي أنه يستخدم struct لعمل المربع لم أفهم البرنامج بالكامل وهناك الكثير من الكود لا يعمل أنا أستخدم VC++ 2010 الملف موجود في المرفقات.
السلام عليكم ورحمة الله وبركاته
لدي لعبة عبارة عن كرة ( لكن الكرة مربع ) أريد أن أعدلها لدائرة لكن المشكلة هي أنه يستخدم struct لعمل المربع لم أفهم البرنامج بالكامل وهناك الكثير من الكود لا يعمل أنا أستخدم VC++ 2010 الملف موجود في المرفقات.
صلي قبل ان يصلى عليك
تقريبا محدش فهمني بصو يا جماعة ده ملف الهيدر اوكي بعد ما عدلته مسحت بعد الكود الي ملهوش لزمه بالنسبالي.....
#include <GL/glut.h>///#include <glut.h>
#include <stdio.h>
#include <GL/gl.h>///#include <glut.h>
#include <GL/glu.h>///#include <glut.h>
#define FROM_RIGHT 1
#define FROM_LEFT 2
#define FROM_TOP 3
#define FROM_BOTTOM 4
static int WINDOW_WIDTH ,WINDOW_HEIGHT;
int playerResult=0;
static float Xspeed=1,Yspeed=1;
static float delta=4;
char string [100];
struct RECTA
{
float left,top,right,bottom;
};
RECTA ball={100,100,120,120};
RECTA wall ;
RECTA player_1 ={0,490,40,500};
void DrawRectangle(RECTA rect)
{
glBegin(GL_QUADS);
glVertex2f(rect.left,rect.bottom); //Left - Bottom
glVertex2f(rect.right,rect.bottom);
glVertex2f(rect.right,rect.top);
glVertex2f(rect.left,rect.top);
glEnd();
}
void Timer(int v)
{
/* ??? ???? ????? ?? ?? 5 ?? ????? ?? ??????? */
ball.left+=Xspeed;
ball.right+=Xspeed;
ball.top+=Yspeed;
ball.bottom+=Yspeed;
glutTimerFunc(1,Timer,1); // ??? ????? ???? ??? ?? ??? ?????? ?????? ??????
}
void drawText(char*string,int x,int y)
{
char *c;
glPushMatrix();
glTranslatef(x, y,0);
glScalef(0.1,-0.1,1);
for (c=string; *c != '\0'; c++)
{
glutStrokeCharacter(GLUT_STROKE_ROMAN , *c);
}
glPopMatrix();
}
int Test_Ball_Wall(RECTA ball , RECTA wall)
{
if(ball.right >=wall.right)
return FROM_RIGHT;
if(ball.left <=wall.left)
return FROM_LEFT;
if(ball.top <=wall.top)
return FROM_TOP;
if(ball.bottom >=wall.bottom)
return FROM_BOTTOM;
else return 0 ;
}
bool Test_Ball_Player(RECTA ball,RECTA player)
{
if(ball.bottom >= player.top && ball.left>= player.left && ball.right <=player.right )
{
playerResult++;
return true;
}
return false;
}
static float mouse_x=0;
void MouseMotion(int x,int y)
{
mouse_x=x;
}
// OpenGL Setting
void Setting(void)
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
}
// OnWindowResize
void reshape (int w, int h)
{
WINDOW_WIDTH =w ;
WINDOW_HEIGHT =h ;
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
gluOrtho2D (0, w, h, 0);
glMatrixMode (GL_MODELVIEW);
glLoadIdentity ();
}طيب كل إلي أنا عايز أعمله هو تحويل المربع المتحرك إلى كرة أو دائرة....وإلي هو متعرف ك هيكل:
struct RECTA
{
float left,top,right,bottom;
};
RECTA ball={100,100,120,120};
RECTA wall ;
RECTA player_1 ={0,490,40,500};
void DrawRectangle(RECTA rect)
{
glBegin(GL_QUADS);
glVertex2f(rect.left,rect.bottom); //Left - Bottom
glVertex2f(rect.right,rect.bottom);
glVertex2f(rect.right,rect.top);
glVertex2f(rect.left,rect.top);
glEnd();
}وأنا إحترت صراحة وبرضو عايز أفهم الجزية دي في اللعبة:
void drawText(char*string,int x,int y)
{
char *c;
glPushMatrix();
glTranslatef(x, y,0);
glScalef(0.1,-0.1,1);
for (c=string; *c != '\0'; c++)
{
glutStrokeCharacter(GLUT_STROKE_ROMAN , *c);
}
glPopMatrix();
}أنا عارف إنها بتاعت كتابة الحروف على الشاشة بس في سطور مش عارف بتاعت ايه صراحة زي glPushMatrix(); وووو.....! يا ريت شرح مبسط للدالة :D والله الموفق تجاوبوني على الاسئلة دي وليكم هدية شوية أسئلة كمان :blink:
صلي قبل ان يصلى عليك
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…