PDA

View Full Version : سوال: ستاره راندوم 2



miladbar
جمعه 16 بهمن 1388, 18:36 عصر
من دانشجوی ترم اولی هستم می خواهم برنامه را با استفاده ازتابع gotoxy وحلقه ها وif بنویسم ستاره باید راندوم باشد یعنی در هر بار اجرای برنامه حرکت ستاره باید از یک نقطه شروع شود . اگر ستاره به بالای صفحه برخورد کند معلوم نیست از سمت راست برخورد کرده یا از سمت چپ .که هر یک از انها دستورات مربوط به خود را دارند .چگونه می توانم این دو حالت را از هم متمایز کنم. در حالی که هر دو به یک نقطه برخورد میکنند.

tdkhakpur
جمعه 16 بهمن 1388, 19:01 عصر
یعنی در هر بار اجرای برنامه حرکت ستاره باید از یک نقطه شروع شود
برای این کار از randomize و برای دریافت نقطه رندم از Random استفاده کنید

اگر ستاره به بالای صفحه برخورد کند معلوم نیست از سمت راست برخورد کرده یا از سمت چپ
فرقی ندارد شما فقط حدود را تعیین کنید مثلا اگر x کوچکتر از 0 شد و یا اینکه از 80 بزرگتر شد و یا اینکه در مورد y همچین اتفاقی در بازه 0 و 24 افتاد عکس العمل نشان بدهد.
و اما مشکل اصلی شما انعکاس ستاره در مسیر مشخص هست که شما باید برای رفع چنین مشکلی از sin و Cos استفاده کنید.

miladbar
جمعه 16 بهمن 1388, 21:40 عصر
مشکل من دقیقا در انعکاس ستاره هاست .

می توانید درباره تابع sin و cos که گفتید مقداری توضیح دهید . با تشکر:خجالت:

amin1softco
جمعه 16 بهمن 1388, 22:36 عصر
شرمنده والا من دیدم خیلی دارید کارتون رو سخت می کنید آخه سینوس و کسینوس می خواد چه کار؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟ این کد رو ببینید


#include <conio.h>
#include <dos.h>
#include <stdlib.h>
void main(){

int ox=1,oy=1,x=rand()%79,y=rand()%24,sx=1,sy=1;
_setcursortype(0);
clrscr();
do{
if(x>79 || x<2) sx=-sx;
if(y>24 || y<2) sy=-sy;
ox=x;
oy=y;
x+=sx;
y+=sy;
gotoxy(ox,oy);putch(' ');
gotoxy(x,y);putch('*');
delay(20);
if(kbhit())break;
}while(1);
}
/*****************************************
* programming with amin rajabzadeh *
* cpp.bi@yahoo.in *
******************************************

miladbar
شنبه 17 بهمن 1388, 11:28 صبح
از دوستان عزیز که قصد راهنمایی داشتند سپاسگذارم. کد بالا خیلی بهم کمک کرد.فقط باتابع setcursortypeاشنایی ندارم .لطفا توضیح دهید.
اگر برنامه را برای دو ستاره بنویسیم به صورتی که در برخورد با یکدیگر با توجه به نوع برخورد بازتاب پیدا کنند در این مورد هم مشکل دارم مرا راهنمایی کنید .

tdkhakpur
شنبه 17 بهمن 1388, 12:37 عصر
_setcursortype(0);

موقتا چشمک زن متون یا همان کرسر را مخفی میکند.


می توانید درباره تابع sin و cos که گفتید مقداری توضیح دهید

در مورد این میتوانید به کتاب ریاضی نگاهی بیندازید استفاده از این دو تابع ریاضی دقت اعمال را بسیار بالا میبرد مخصوصا در حالک گرافیک برای رسم نمودار و منحنیها و همچنین برای ساخت screen saver و یا کار مشایه خواسته شما که ساده ترین شکل انهاست.

miladbar
شنبه 17 بهمن 1388, 16:28 عصر
اگر دو ستاره را با هم حرکت دهیم وبا توجه به اینکه از تابع() srand استفاده کرده ایم ممکن است ستاره ها
با هم برخورد نکنند ایا این امکان وجود دارد کاری کنیم که ستاره ها در زمان کوتاهی با هم برخورد کنند .
همچنین نحوه بازتاب ستاره ها در برخورد با هم چگونه است (بدون استفاده از توابع مثلثاتی).
چون مدت کوتاهی است برنامه نویسی را شروع کرده ام اگر سوال هایم ساده ومبتدیانه است عذر خواهی می کنم. :خجالت::خجالت:

tdkhakpur
شنبه 17 بهمن 1388, 22:13 عصر
یه چیزی تو این مایه هاست


#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <dos.h>
#include <stdlib.h>
void main(){
randomize();
int ox=1,oy=1, ox2=1,oy2=1,
x=rand()%79,
y=rand()%24,
x2=rand()%79,
y2=rand()%24,
sx=1,sy=1,
sx2=1,sy2=1;
_setcursortype(0);
clrscr();
do{
if( x==x2 &&y==y2 ){
sx2=-sx2;
sy2=-sy2;
}
if(x>79 || x<2) sx=-sx;
if(y>24 || y<2) sy=-sy;
if(x2>79 || x2<2) sx2=-sx2;
if(y2>24 || y2<2) sy2=-sy2;
ox=x;
oy=y;
gotoxy(ox,oy);putch(' ');
ox2=x2;
oy2=y2;
gotoxy(ox2,oy2);putch(' ');
x +=sx;
y +=sy;
gotoxy(x,y);putch('*');
x2 +=sx2;
y2 +=sy2;
gotoxy(x2,y2);putch('*');
delay(30);
if(kbhit()) break;
}while(1);
}

miladbar
سه شنبه 20 بهمن 1388, 16:43 عصر
كد شما درمورد برخورد ستاره ها با يكديگر صحيح نيست اگر زاويه برخورد رو به بالا يا پايين باشد بايد طول حركت هر دو ستاره قرينه شود اگر زاويه برخورد رو به سمت چپ يا راست باشد بايد عرض دو ستاره قرينه شود.
همچنين ستاره ها بعد از مدت زمان طولاني به هم برخورد مي كنند سوال اصلي من اين است آيا مي شود ستاره ها بعذ از زمان كمي حتما به هم برخورد كنند.