1 / 17

Introduction to g4c

Introduction to g4c. G4C is a simple graphics library, designed to make game programming easier It's very small draw_line, draw_rect, draw_ellipse, fill_rect, fill_ellipse text_out, input, inkey load_sprite, put_sprite, hide_sprite, get_sprite_pos, get_sprite_size , swap_sprite_images

isleen
Download Presentation

Introduction to g4c

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduction to g4c • G4C is a simple graphics library, designed to make game programming easier • It's very small • draw_line, draw_rect, draw_ellipse, fill_rect, fill_ellipse • text_out, input, inkey • load_sprite, put_sprite, hide_sprite, get_sprite_pos, get_sprite_size , swap_sprite_images • register_sprite_proc, disable_sprite_proc, enable_sprite_proc • New functions: register_mouse_proc, copy_sprite_images

  2. Introduction to g4c • I shall now explain some important functions • The others are explained in g4c_help.doc, remember to get it from me at the end • It was written by previous 1'st year students :)

  3. The G4C window

  4. void draw_line(int x1,int y1,int x2,int y2,int clr);

  5. void draw_rect(int x1,int y1,int width, int height); (x, y)‏ width height

  6. void draw_ellipse(int x1,int y1,int width, int height); (x, y)‏ width height

  7. void text_out(char * message,int x, int y); • Writes the specified string in the given location • Can only work with strings • You can convert other data types to strings with sprintf or itoa or ftoa • Example: • Char str[200]; • sprintf(str, “%d”, 15); // str is now “15” • sprintf(str, “%f”, 15.3); // str is now “15.3” • // %d is integer, %f is float

  8. char *input(char * message,int x, int y); • Writes the message in the given location • Then it will wait for the user to enter some text and press enter • The function returns the string the user entered • Always returns a string • You can convert strings to other data types with atoi to convert from strings to integers, or atof to convert them to floats

  9. Sprites • هي رسومات تتحرك على الشاشة • مثلاً شخصيّة في لعبة كالسيارة أو الجندي • لهم خانات في الذاكرة من 0 إلى 29 • حين ترسمها في مكان ثم ترسمها في مكان آخر تُمسح تلقائيُا من المكان القديم • هي لا تمسح ما تحتها

  10. void load_sprite(char* fname, int spritenum)‏ • تحمّل الصورة في الذاكرة في المكان المحدد بالرقم • لكنها لا ترسم شيئاً • يجب أن يكون الملف من نوع.bmp • و يجب أن يكون في مكان ثابت (مثلاc:\images ) أو في نفس مكان ال.exe • لاحظ أنه في الC++ نحتاج إلى تحديد رمز ال \ بطريقة خاصة: • load_sprite(“C:\\images\\ball.bmp”, 1);

  11. void put_sprite(int spritenum,int x,int y); • تضع الsprite في مكان محدد على الشاشة • يجب أن تكون رسمة الsprite قد حُمّلت من قبل في الرقم المحدد • لو ناديتها لتضع نفس الsprite في مكانين متتابعين مختلفين فإنه سيختفي من المكان الأول حين تضعه في المكان الثاني

  12. void swap_sprite_images(int sprite1,int sprite2); • تبدل الصورتين الخاصتين بالsprites • تستخدم في إظهار الحركة – مثلا تبادل القدمين عند المشي • غالبا ما يكون أحد الsprites ظاهرا و الآخر مختفيا

  13. void register_sprite_proc(spriteproc); • تُنادى عادةً في أول البرنامج • و عند حوث تصادم بين اى من 2 sprites او اكثر يقوم البرنامج بتنفيذ الدالة الموجود اسمها بين القوسينspriteproc • و لكن يجب ان تكون الدالة التى بين الاقواس قد تم تعريفها خارج الmain • و يجب أن تكون في صورة • int onsprite(int ,int,void*)‏

  14. int onSprite(int s1, int s2, void *data)‏ • تكتبها في البرنامج حين تريد التعامل مع تصادم الsprites • لا تناديها أنت, بل يناديها الg4c تلقائيا حين تتصادم الsprites(و أيضا سيعطيها الparameters بأرقام الsprites المصتدمة)‏ • و لكن لكي يناديها الg4c يجب أن تقوم بتسجيلها لديه بواسطةregister_sprite_proc • يمكن أن يكون لها أي إسم, المهم أن يكون تسجيلها بنفس إسمها • أنواع الparamaters لا يمكن تغييرها, ولا الreturn type

  15. Example on the collision callback function void myCollisionFunction(int s1, int s2, void * data)‏ { if( (s1 == player_sprite && s2 == bullet_sprite)‏ || (s1 == player_sprite && s2 == bullet_sprite) )‏ { text_out(“you die!”, 50 , 50); end_game = true; } }

  16. void register_mouse_proc(MouseProc); • تستخدم لتسجيلcallback مثلها مثلregister_sprite_proc • سينادي الg4c الدالة المسجلة كلما حرك المستخدم الفأرة أو ضغط أي من زرّيها • الدالة الcallback يجب أن تكون في الصورة الآتية:

  17. Example mouse callback int mouseCallback(int x, int y, bool leftBtn, bool rightBtn, void *data)‏ { if ( leftBtn == true && x < 50 && y <100)‏ { fire_cannon_left( ); } if ( leftBtn == true && x < 250 && y <300)‏ { fire_cannon_right( ); } }

More Related