-
حرکت دایره در ++C
سلام
من كدي براي حركت يك دايره در برنامه c++ نوشته ام ولي يه مشكلي هست و اون اينكه دايره را حركت نمي دهد
من سعي كردم كد را درست بنويسم ولي فكر مي كنم كه دايره قبلي را بدون اضافه كردن هيچ مقداري درون دايره قبلي مي ريزد
بنايراين دايره من از جايش تكان نمي خورد
لطفا كمك كنيد تا بفهمم مشكل از كجاست؟
مرسي
كد من :
[HTML]
#include<iostream.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<conio.h>
#include<dos.h>
#include<graphics.h>
class shape
{
private:
float points [3][1];
int radius , color;
public :
shape(float xc , float yc , int r );
void move (int a , int b );
void draw ();
};
void shape::shape(float xc , float yc , int r)
{
points[0][0]= xc;
points[1][0]=yc;
points[2][3]=1;
radius=r;
draw();
}
void shape::draw()
{
float a;
float pi=4*tan(1);
for(a=0 ; a<=2*pi ; a+=0.02)
putpixel(points[0][0]+radius*cos(a) , points[1][0]+radius*sin(a),5);
}
void shape::move(int a , int b)
{
float newpoints[3][1];
int t[3][3]={1,0,a,0,1,b,0,0,1};
int k, j,i;
for (i=0 ; i<3 ; i++)
for (j=0 ; j<1 ; j++)
{
newpoints[i][j] =0;
for(k=0 ; k<3 ; k++)
newpoints[i][j] += t[i][k]*points[k][j];
}
for (i=0 ; i<3 ; i++)
for (j=0 ; j<1 ;j++)
points[i][j] = newpoints[i][j];
}
void main()
{
int gd = DETECT , gm ;
initgraph(&gd , &gm , "C:\\Red\Language\\TC\\BGI");
int ec = graphresult();
if (ec !=0)
{
cout<<"Graph Error "<<grapherrormsg(ec);
getch();
exit(0);
}
shape circle (100,100,70);
do
{
delay(200);
cleardevice();
circle.move(15,10);
circle.draw();
}
while(!kbhit());
}
[/HTML]
لطفا راهنمايي كيند
-
سلام.
اول یه سوال ازتون داشتم:
چرا از تابع circle استفاده نکردین؟ که در خود graphics.h قرار داره.
مثلا به این شکل:(برای دیدن حرکت دایره)
کد:
for(int i=0;i<400;i++)
{
circle(i,Ycor,radius);
clrscr();
delay(10);
}
ضمنا متوجه نشدم که در تابع move شما دنبال چه کاری هستین! چرا اینقدر پیچیده!؟
اگه فقط میخواید دایره به محل مورد نظر منتقل بشه میتونید این کد رو براش بنویسید:
کد:
void shape::_move(int x,int y)
{
points[0][0] = x;
points[1][0] = y;
cleardevice();
draw();
}
اگر هم میخواید مسیر حرکتش رو ببینید مثلا از این نمونه میتونید استفاده کنین:
کد:
void shape::__move(int a,int b)
{
int x,y;
for(x=points[0][0];x<=a;x++)
{
for(y=points[1][0];y<=b;y++)
{
points[0][0] = x;
points[1][0] = y;
cleardevice();
draw();
}
}
}
-
پاسخ
سلام
استاد ارجمند اجازه ندادند از تابع circle استفاده كنيم
مرسي و ممنون
-
به ما گوفتن که یک مربع که با ستاره ایجاد شده رو از یه گوشه صفحه با هر بار زدن کلید مکان به نقطه بعدی ببره.برنامه این رو برام توضیح میدین؟چجوری متغیر از کیبورد بگیرم؟با کیبرد هیت؟کلا یه راهنمایی برای این سوال بکنین ممنون میشم