PDA

View Full Version : سوال: ایراد این برنامه چیست؟



adel_minayi
سه شنبه 22 دی 1388, 00:26 صبح
سلام،استاد گفته:
با زبان C؛برنامه ای بنویسید که در هر بار اجرا دو ستاره از دو نقطه ی صفحه به صورت تصادفی(random)شروع به حرکت کنند و در صورت برخورد با یکدیگر و یا برحورد با کناره های صفجه(چهار ضلع مانیتور) بازتاب کنند،توجه شود که زاویه حرکت نیز باید به صورت تصادفی باشد(random)
(زاویه تصادفی باشه یعنی مثلا یه بار ستاره ها در هر مرحله حرکت (1،1) اضافه شوند و یک بار در هر مرحله حرکت (1،2)اضافه شوند)
حاضر به هرگونه جبران زحمات هم هستیم
خودم برنامه رو نوشتم،فقط نمیدونم چرا وسط اجرا یکی از ستاره ها میره گوشه صفحه و دیگه حرکت نمیکنه......لطفا کمکم کنید،اگه ممکنه تصحیح کنید،چون وقت ندارم دیگه روش کار کنم،در ضمن واسه نوشتن این برنامه کسایی هستند که 15 تومان پول میگیرند،پس اید سورس رو پخش نکنید.

mortezamsp
سه شنبه 22 دی 1388, 12:13 عصر
چرا فکرمیکنی این ایده رو میخوان بدزدن ؟ اینقدر از این ایده ها زیاد ریختن تو اینترنت که.... اصلا خودتو نگران نکن ، میگن ذکات علم نشر آن است .بعدشم ، ایدت خوب بود .


//Adel_minayi@gmail.com©All Right Reserved
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <dos.h>
#include <time.h>
struct point{
int x ,y ;
int dirx , diry ;
point(int i,int j)
{
x=i ;
y=j ;
int r ;
time_t t ;
srand( time(&t) ) ;
dirx = ( (r=rand()%4) < 2 ? r : (3-r)*-1 ) ;
diry = ( (r=rand()%4) < 2 ? r : (3-r)*-1 ) ;
}
};
int main()
{
//struct point p1( rand()%24 ,rand()%80 ) ;
//struct point p2( rand()%24 ,rand()%80 ) ;
struct point p1( 20 ,20 ) ;
struct point p2( 10 ,10 ) ;

//movement
while( !kbhit() )
{
/*move point 1 */
p1.x += p1.dirx ;
p1.y += p1.diry ;
/* move point 2 */
p2.x += p2.dirx ;
p2.y += p2.diry ;
/* collision */
if( p1.x==p2.x && p1.y==p2.y )
{
struct point temp ( 0 ,0 ) ;
temp.dirx = p1.dirx ;
temp.diry = p1.diry ;
p1.dirx = p2.dirx ;
p1.diry = p2.diry ;
p2.dirx = temp.dirx ;
p2.diry = temp.diry ;
}
/* walls */
if( p1.x <=0 || p1.x >=24 )
p1.dirx *= -1 ;
if( p1.y <=0 || p1.y >=80 )
p1.diry *= -1 ;
if( p2.x <=0 || p2.x >=24 )
p2.dirx *= -1 ;
if( p2.y <=0 || p2.y >=80 )
p2.diry *= -1 ;
/* print points */
clrscr () ;
gotoxy( p1.y ,p1.x ) ;
cout << "*" ;
gotoxy( p2.y ,p2.x ) ;
cout << "*" ;
delay ( 20 ) ;
}

getch () ;
return 0 ;
}

بعدشم من والا این تو برخوردی ندیدم ، هرچقدر صبر کردم بهم برخورد نکردن نمیدونم چرا .
مشکل شماهم فکرکنم توجابجا نوشتن آرگومان های gotoxy و این که نمیدونستید صفحه نمایش 24*80 هست و ... .