PDA

View Full Version : نوشتن برنامه چرتکه با c



vb8334
پنج شنبه 23 اردیبهشت 1389, 22:16 عصر
با سلام به تمامی دوستان

دوستان من میخوام برنامه چرتکه رو بصورت گرافیکی با زبان c بنویسم

یه دنیا ممنون

saber187518
جمعه 24 اردیبهشت 1389, 18:49 عصر
با سلام خدمت شما دوست عزیز
کد برنامه رو میخوای یا اینکه در موردش راهنمایی نیاز داری؟
من محیط گرافیکی یه مقداری کار کردم. اگه کمک نیاز داری بپرس امیدوارم که بتونم کمکت کنم.

vb8334
جمعه 24 اردیبهشت 1389, 21:15 عصر
ممنون اگه میشه راهنمایی کنید که خیلی عالیه
از کجا باید base کار رو بزنم توضیح بدید

یه دنیا ممنون

saber187518
جمعه 24 اردیبهشت 1389, 22:07 عصر
دوست عزیز (به نظر بنده) کارهای قابل انجام به ترتیب:
1)باید بکنی اینه که یک قاب چرتکه رو طراحی کنی.
2)میله های داخل قاب را برای نگهداری مهرا ه طراحی کنی.
3)مهرا های چرتکه که سمبل محاسبات و اعداد هستن رو طراحی کن.
4)با استفاده ز وقفه های ماوس بتونی موقعیت کلیک ماوس رو بدست بیاری.
5)بفهمی ک این کلیک کجا اتفاق افتاده. آیا روی یکی از مهره ها بوده. اگه روی مهره بوده ، این حرکت قابل انجام هست یاخیر.
6)درصورت انجام حرکت مهره ها رو به عنوان انجام محاسبات جا بجا کنی.
موفق باشی.

saber187518
دوشنبه 27 اردیبهشت 1389, 13:47 عصر
با سلام دوست عزیز
برای اینکه به نتیجه برسی پیشنهاد می دم با هم گام به گام جلو بریم هم اینکه شما یاد میگیری کارت رو انجام بدی و هم اینکه بقیه هم اگه سوالی داشته باشن با این تاپیم مسائلشون حل میشه.
در هر صورت این یک پیشنهاد بود.
راستی بک سوال :
این برنامه باید گرافیکش در چه حد باشه؟
اگه دوست داشتی که شروع کنیم کافیه که جواب بدی و از اون لحظه گام به گام جلو میریم.
موفق باشی.

hamedafb
دوشنبه 27 اردیبهشت 1389, 14:31 عصر
سلام
خیلی ممنون که جواب دادید.باشه شروع کنیم.

saber187518
دوشنبه 27 اردیبهشت 1389, 16:26 عصر
خوب دوست عزیز اولین کاری که باید انجام بدیم اینه که یک مستطیل تعریف کنیم که وسط صفحه بیفته.
برای این کار باید ابتدا یک محیط را برای چرتکه طراحی کنیم.
کد زیر طراحی یک مستطیل می باشد.
ببخشید من امروز کار دارم دوباره امشب آخر شب حدود 12 میام. یا فردا شب 12.
پس فعلا یاحق.


#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <dos.h>

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int midx, midy;
int radius = 100;

/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "c:\\tc\\bgi");

/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}
setcolor(BLUE);
bar3d(10,20,getmaxx()-20,getmaxy()-10,10,1);
midx = getmaxx() / 2;
midy = getmaxy() / 2;
setcolor(getmaxcolor());

/* draw the circle */


/* clean up */
getch();
closegraph();
return 0;
}

vb8334
دوشنبه 27 اردیبهشت 1389, 16:28 عصر
سلام به تمامی دوستان

دوست عزیز saber187518 اگه لطف کنید و با هم مراحل رو به صورت گام به گام جلو بریم عالی میشه
گرافیک برنامه هم در سطح متوسط یا خوب باشه کافیه
من اماده ام شروع کنیم

یه دنیا ممنون

hamedafb
دوشنبه 27 اردیبهشت 1389, 16:49 عصر
خیلی ممنون من هم سعی میکنم امشب ساعت 12 بیام ولی مطمئن نیستم.اگه نیومدم فردا ساعت 2تا 12 حتما هستم.ممنون میشم بیاید و به من کمک کنید .البته من از صبح تا حالا چیزای خوبی از گرافیک یاد گرفتم و درک اون برام خیلی اسون شده و بخش هایی از چرتکه رو فهمیدم و میتونم شما رو همراهی کنم.
با تشکر

(http://www.softkade.ir)

hamedafb
دوشنبه 27 اردیبهشت 1389, 22:06 عصر
سلام من میتونم تا ساعت 12 آنلاین باشم اگه آنلاین هستید شروع کنیم؟
آقا صابر اگه میشه بر اساس اون سورس که به ایمیلتون فرستادم گفتگو کنیم چون هم کامپایلرم Turbo C++ 3.0 DOS هست و هم اینکه تسلطم بر این سورس بهتر میشه و راحتر میتونم توضیح بدم.
من گرافیک رو کمی یاد گرفتم پس اگه میشه این سورس رو تکه تکه کنید و هر بخش رو بگید چطور کار میکنه و کارش چیه.این روش خوبه یا نه ؟

hamedafb
دوشنبه 27 اردیبهشت 1389, 23:20 عصر
من هنوز آنلاینم.بازم تا 12 صبر میکنم.اگه خوابیدید من میرم فردا ساعت 2 یا 3 میام وخواهشن انلاین باشید.

saber187518
دوشنبه 27 اردیبهشت 1389, 23:45 عصر
سلام دوست عزیز من آنلاین هستم
ولی ایمیلم باز نمیشه نمیدونم چه مرگشه.
منظورت از پاسخ هات اینه که آموزش گرافیک بدم؟
یا چیز دیگه؟

hamedafb
سه شنبه 28 اردیبهشت 1389, 16:54 عصر
سلام من آنلاین هستم
نه من میخوام خط به خط برنامه چرتکه رو بررسی کنیم و برای همین میگم با یه سورس مشخص جلو بریم
من میگم اول کل برنامه چرتکه رو که خودتون ساختید رو بهم بدین ببینم کدوم رو بهتر میفهمم بعد طبق اون جلو میریم؟میشه یا نه

saber187518
سه شنبه 28 اردیبهشت 1389, 23:12 عصر
با سلام این هم یه گام دیگه برای ادامه پروژه
در این گام میله های چرتکه ترسیم میشه.


#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <dos.h>

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int i;
/* initialize graphics and local variables */
initgraph(&gdriver, &gmode, "c:\\tc\\bgi");
/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}
//rasme ghabe chortke
setcolor(BLUE);
bar3d(10,20,getmaxx()-20,getmaxy()-10,10,1);
/////////////////////////////////////////////
//rasme milehaye chortke
setcolor(GREEN);
for (i=1;i<=5;i++)
line(59+i,20,59+i,getmaxy()-10);
for (i=1;i<=5;i++)
line(159+i,20,159+i,getmaxy()-10);
for (i=1;i<=5;i++)
line(259+i,20,259+i,getmaxy()-10);
for (i=1;i<=5;i++)
line(359+i,20,359+i,getmaxy()-10);
for (i=1;i<=5;i++)
line(459+i,20,459+i,getmaxy()-10);
for (i=1;i<=5;i++)
line(559+i,20,559+i,getmaxy()-10);
////////////////////////////////
//rasme mohrehaye chortke
getch();
closegraph();
return 0;
}

ببخشید اینترنت اینجا خیلی مشکل داره دقیقا 1 ساعت دارم برای ارسال این پست تلاش میکنم.
در ضمن اصلا نمیتونم وارد ایمیلم بشم.

hamedafb
سه شنبه 28 اردیبهشت 1389, 23:19 عصر
خیلی ممنون که جواب دادید پس اول اگه میشه کل سورس رو بزارید ببینم در چه حدیه بعد شروع میکنیم
بعد یه سوال:



void Process(long n1,long n2);
//****************************************
void main()
{
long n1,n2;
char ch;
cout <<"Avalin Adad Ra Vared Konid:";
cin >>n1;
process(n1);
getch();
cleardevice();


تو خط process(n1); ارور پایین رو میده علت چیه و چطور باید رفعش کرد.
ارور:
too few parameters in call to 'process(long,long)'

saber187518
سه شنبه 28 اردیبهشت 1389, 23:48 عصر
دوست عزیز شما توی تعریف تابع دو تا پارامتر گذاشتی و داخل فراخوانی فقط یکی از پارامتر ها رو مقدار دهی کردی.
شما باید به همان تعداد که در تعریف تابع پارامتر تعریف میکنی در هنگام فراخوانی هم به همان تعداد پارامتر قرار بدی.
در مورد کل برنامه که فرمودید ، من کامل ننوشتم و قراره که قدم به قدم با هم بنویسیمش.
فردا گام بعدی رو انجام میدیم.
موفق باشی.

hamedafb
چهارشنبه 29 اردیبهشت 1389, 00:01 صبح
خیلی ممنون ولی مشکلم رو حل کردم میزارم که دیگران براشون پیش نیاد:
کافیه :



process( 0 , n1 );

و برای فراخوانی n2



process( 0 , n2 );

اینطوری ارور به طور کامل برطرف میشه.

hamedafb
چهارشنبه 29 اردیبهشت 1389, 00:03 صبح
در مورد پیشنهاد هم هر طور خودتون صلاح می دونین. باشه
من فردا ساعت 3 تا 12 آنلاینم میتونید بیاید یا نه؟

hamedafb
چهارشنبه 29 اردیبهشت 1389, 15:48 عصر
سلام من آنلاین شدم تا ساعت 12 شب
آقا صابر خواهشن آنلاین باشید من فردا صبح پروژه دارم و اصلا وقت ندارم
خیلی ممنون

hamedafb
چهارشنبه 29 اردیبهشت 1389, 21:37 عصر
هنوز آنلاینم

saber187518
جمعه 31 اردیبهشت 1389, 01:31 صبح
با سلام خدمت تمامی دوستان
از همه بزرگواران عذر خواهی میکنم ولی بعد از 2 روز تا زه تونشتم به اینترنت وصل شم.
آخه من فقط آخر شب وقت دارم که بیام سایت. و متاسفانه دیروز نشد.
بریم سر اصل کارمون.
برای طراحی هر کدوم از مهره ها من چنین چیزی رو طراحی کردم.
البته بگم که این خیلی ابتدایی هست. میشه به جای اینکه این روش رو رفت یک جسم یکپارچه تعریف کرد که حالا دفعه بعد براتون میذارم.
فعلا این رو داشته باشید. چون اولین چیزی که به ذهن یک برنامه نویس مبتدی(مثل خودم) میرسه همین روشه.


setcolor(RED);
for (i=1;i<=10;i++)
line(40,getmaxy()-10-i,85,getmaxy()-10-i);

این تکه کد رو بعد از


////////////////////////////////
//rasme mohrehaye chortke

توی برنامه اضافه کنید میبینید که یک مهره به شما نشان میده.
که شما میتونید هر چند تا مهره و هرجا که خواستید با هر رنگ دلخواه قرار بدید.
اگه نگاه ساعت پست مطلب کنید میبینید که خیلی دیر وقت هست.
بازم از همه عذر میخوام.
موفق باشید.

saber187518
جمعه 31 اردیبهشت 1389, 01:39 صبح
با سلام دوباره خدمت همه عزیزان
دلم نیومد بدون مطلبی که قولش رو دادم بخوابم.
برای اینکه بتونید یک شی منسجم به جای مهره ها طراحی کنید. میتونید از تابع زیر استفاده کنید.


void button_3d(int x1,int y1,int x2,int y2,int check,int color)
{
int up,low;
setfillstyle(1,7);
bar(x1,y1,x2,y2);
if(check==0) //Unclicked
up=15,low=8;
else
up=8,low=15; //Clicked
setcolor(low);
line(x2,y1,x2,y2);
line(x2-1,y1,x2-1,y2);
line(x1,y2,x2,y2);
line(x1+1,y2-1,x2,y2-1);

setcolor(up);
line(x1,y1,x2,y1);
line(x1+1,y1+1,x2-1,y1+1);
line(x1,y1,x1,y2);
line(x1+1,y1+1,x1+1,y2-1);
setcolor(color);
}

این تابع به راحتی به شما اجازه میده که یک شی منسجم به جای هر مهره طراحی کنید با هر رنگ دلخواه و در هرجای دلخواه در صفحه.
بقیش رو دیگه بعدا مینویسم. واقعا خسته هستم.
موفق باشید.

hamedafb
یک شنبه 09 خرداد 1389, 08:39 صبح
سلام
من برگشتم و الان هم میخوام برم ولی این آقا صابر درست بعد از اینکه من پروژه رو تحویل دادم اومد و شروع به پست دادن کرد .به هر حال من نمره پروژه رو 5 از 6 شدم و قانعم.ولی آقا صابر دفعه ی بعد هیچ کس رو 4 روز منتظر نذار...
sanayara= یعنی خدا حافظ - به زبان ژاپنی هست.