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

~ برمجة رسام بلغة السي في بيئة الجرافيك ~

بدأه The Hidden Ghost في 8 نوفمبر 2012 · 2 رد · 2,305 مشاهدة · في مشاريع ومسابقات القسم
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

person-on-computer.jpg?w=510

عالم الرسوميات في لغة السي!!!

السلام عليكم ورحمة الله تعالى وبركاته ،،،

أقدم لكم هذا البرنامج الذي يمكن المستخدم من الرسم على الشاشة وذلك طبقا للمعايير الدولية الكايبوردية ذات الأزرار التالية ،،،

laugh.gif

الزر رقم8: الرسم إلى الأعلى

الزر رقم 2: الرسم إلى الأسفل

الزر رقم 4:الرسم إلى اليسار

الزر رقم 6: الرسم إلى اليمين

الزر رقم 5: المسح العلوي

الزر رقم 0:المسح السفلي

الزر -: المسح اليساري

الزر +: المسح اليميني

الزرEnter : مسح النقطة الحالية

الزر ESC: الخروج من البرنامج

وإليكم هذه الصورة التي توضح كيفية رسم مربع أخضر بالبرنامج ،،،

smile.gif

WNtAO.png

الكود سورس ،،،


#include <dos.h>
#define MiddleX 159 // 320*200 => X = 320/2 - 1 => X = 159
#define MiddleY 99 // Y = 200/2 - 1 => Y = 99

#define DRAW_PIXEL 0xC // Function for drawing a pixel on screen
#define DELETE_POINT 0x0 // Black Color for Deleting a point(pixel)
#define GREEN_COLOR 0x2 // Color of Pixel
#define PAGE_NUMBER 0x1 // one page no more :)
#define COLUMN MiddleX // Center Screen
#define ROW MiddleY // Center Screen
#define GETCHAR 0x0
#define SET_VIDEO_MODE 0x0
#define VGA_MODE 0x13 // (320*200) 256 color Mode
#define BIOS_INT 0x10 // int 10h
#define KEYBOARD_INT 0x16 // int 16h
#define UP 56 // '8'
#define DOWN 50 // '2'
#define LEFT 52 // '4'
#define RIGHT 54 // '6'
#define DELETE 0x0D // 'ENTER'
#define EXIT 0x20 // int 20h
#define ESC 0x1B //'ESC'
#define GOTO_UP 53 // '5'
#define GOTO_DOWN 48 // '0'
#define GOTO_LEFT 0x2D // '-'
#define GOTO_RIGHT 0x2B // '+'
#define TEXT_MODE 0x03

union REGS IN;
union REGS OUT;


void main(){
IN.h.ah = SET_VIDEO_MODE;
IN.h.al = VGA_MODE;
int86(BIOS_INT,&IN,&OUT);

IN.h.ah = DRAW_PIXEL;
IN.h.al = GREEN_COLOR;
IN.x.bx = PAGE_NUMBER;
IN.x.cx = COLUMN;
IN.x.dx = ROW;
int86(BIOS_INT,&IN,&OUT);

get:
IN.h.ah = GETCHAR;
int86(KEYBOARD_INT,&IN,&OUT);
switch(OUT.h.al){
case UP :
IN.x.dx-=1; // dec dx => dx--
goto DRAW;
break;

case DOWN:
IN.x.dx+=1; // inc dx => dx++
goto DRAW;
break;

case LEFT :
IN.x.cx-=1; // dec cx => cx--
goto DRAW;
break;

case RIGHT:
IN.x.cx+=1; // inc cx => cx++
goto DRAW;
break;

case GOTO_UP:
IN.x.dx-=1; // dec dx => dx--
goto DELTE_A_PIXEL;
break;

case GOTO_DOWN:
IN.x.dx+=1; // inc dx => dx++
goto DELTE_A_PIXEL;
break;

case GOTO_LEFT:
IN.x.cx-=1; // dec cx => cx--
goto DELTE_A_PIXEL;
break;

case GOTO_RIGHT:
IN.x.cx+=1; // inc cx => cx++
goto DELTE_A_PIXEL;
break;

case DELETE:
IN.h.ah = DRAW_PIXEL;
IN.h.al = DELETE_POINT;
int86(BIOS_INT,&IN,&OUT);
goto get;
break;

case ESC:
IN.x.ax = TEXT_MODE;
int86(BIOS_INT,&IN,&OUT);
int86(EXIT,&IN,&OUT);
break;

default:
goto get;
break;
}
DRAW:
IN.h.ah = DRAW_PIXEL;
IN.h.al = GREEN_COLOR;
int86(BIOS_INT,&IN,&OUT);
goto get;

DELTE_A_PIXEL:
IN.h.ah = DRAW_PIXEL;
IN.h.al = DELETE_POINT;
int86(BIOS_INT,&IN,&OUT);
goto get;
}

الشرح ،،،

yGoDz.png

FC0HG.png

JneUJ.png

Cx3dq.png

لكي تستطيعوا ترجمة البرنامج يرجى تحميل برنامج التربو السي++ من هذا الرابط :

http://depositfiles....files/5modl08gt

لتحميل البرنامج + السورس كود ،،،

بالتوفيق

smile.gif...

Drawing_For_FREE.zip

تم تعديل هذه المشاركة بواسطة Hamza+C+ASM في 8 نوفمبر 2012 في 01:51

2
rS3eY.png
#2

رائع حمزة :)

وان كنت لا اعرف سبب تمسكك ب borland C++C مع انه قديم وتوقف تطويره

على كل فى انتظار مشاريع كهذه وافضل

تحياتى


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#3

مرحباً أخي حمزة :)

موضوع جميل جداً لكنه قديم بعض الشيء لأن المكتبة dos.h لم تعُد تُستعمل.

لذا أنصحك بالتركيز على تطبيقات win32 بدلا من win16 حتى تلحق بالركب ..

تحياتي.

1

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

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

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

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

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