كلاسهاي سي پلاس آبشون باهم توي يه جوب نميره؟
سلام
من يه تكه كد نوشتم كه دوتا كلاس داره و دوتا سازنده را بعد هم صدا ميزنم (كارم اشتباهه؟) تنها يكي از كلاسها فعال ميشه و به دومي محل نيمذاره
من حتي جاي كلاسها را عوض كردم ولي فايده نداره (فقط از يكي از اونها خوشش اومده وهمون را فعال مي كنه)
من حتي از خير كلاس دوم گذشتم و او نرا به صورت تابع تعريف كردم ولي فايده نداره يا از اسم اين تابع خوشش نيومده يا من خيلي هواس پرتم
كمكم مي كنيد
مرسي
كد را مي زارم
كد:
کد:
#include<iostream.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<conio.h>
#include<dos.h>
#include<graphics.h>
float points[3][13] = {{20,20,15,20,20,40,55,100,125,100,55,40,20 },{50,40,35,30,20,30,20,20,35,50,50,40,50 },{1,1,1,1,1,1,1,1,1,1,1,1,1 }};
points1[3][16]={{20,60,100,140,180,220,260,300,340,380,420,460,500,540,580,620},{400,400,400,400,400,400,400,400,400,400,400,400,400,400,400,400},{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}};
points2[3][16]={{0,40,80,120,160,200,240,280,320,360,400,440,480,520,560,600},{425,425,425,425,425,425,425,425,425,425,425,425,425,425,425,425},{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}};
class bomb
{
private:
float pi;
public:
bomb();
void myline(float x1, float y1 , float x2 , float y2);
void b_move(int a , int b);
void rotate(float x ,float y,float p );
void b_draw();
};
void bomb::bomb()
{
pi = 4*tan(1);
b_draw();
}
void bomb::myline(float x1, float y1 , float x2 , float y2)
{
float y;
if ((x2-x1)==0 ||(x2<x1) ||(y2<y1)) line( x1 , y1 , x2 , y2);
else
{
float m = (y2-y1)/(x2-x1);
float b = y2-m*x2;
for (float x = x1 ; x<=x2 ; x+=0.01)
{
y = m * x +b;
putpixel(x,y,7);
}
}
}
void bomb::b_draw()
{
for(float a = 0 ; a<12 ; a++)
myline(points[0][a],points[1][a],points[0][a+1],points[1][a+1]);
}
void bomb::b_move (int a, int b)
{
float newpoints[3][13];
int t[3][3] ={{1,0,a},{0,1,b},{0,0,1}};
for (int i =0 ; i <3 ;i++)
for (int j = 0 ; j<13 ; j++)
{
newpoints[i][j] = 0;
for (int k =0 ; k<3 ; k++)
newpoints[i][j] += t[i][k]*points[k][j];
}
for(i =0 ; i<3 ; i++)
for(j =0 ; j<13; j++)
points[i][j] = newpoints[i][j];
}
class wave
{
private:
public:
wave();
void w_draw(float xc , float yc , float r);
};
void wave::w_draw(float xc , float yc , float r)
{
for (float x =-r ; x<=r ; x+=0.01)
{
float y = sqrt(r*r - x*x);
putpixel(x+xc , yc+y , 9);
}
}
void wave::wave()
{
for(int k = 0 ; k<16 ; k++)
w_draw(points1[0][k],points1[1][k],20);
for(int j = 0 ; j<16 ; j++)
w_draw(points2[0][j],points2[1][j],20);
}
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);
}
bomb act;
wave wv;// من حتي اين جا اين كلاس را حذف كردم و تنها توابع را بكار بردم
do
{
delay(300);
cleardevice();
act.b_move(10,20);
act.b_draw();
}
while(!kbhit());
getch();
closegraph();
}
من بعدا كلاس wave را اين طوري تعريف كردم (تابعي)
کد:
void w_draw(float xc , float yc , float r)
{
for (float x =-r ; x<=r ; x+=0.01)
{
float y = sqrt(r*r - x*x);
putpixel(x+xc , yc+y , 9);
}
}
void wave()
{
for(int k = 0 ; k<16 ; k++)
w_draw(points1[0][k],points1[1][k],20);
for(int j = 0 ; j<16 ; j++)
w_draw(points2[0][j],points2[1][j],20);
}
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);
}
wave();
// bomb act;
// do
// {
// delay(300);
// cleardevice();
// act.b_move(10,20);
// act.b_draw();
// }
// while(!kbhit());
getch();
closegraph();
لطفا راهنمايي كنيد
همين معذرت مي خوام كه من اين قدر سمج هستم مي دونم با اين سوالاي تكراري و طولاني كه پره بي دقتيه
خستتون كردم
:41:
يادم رفت : فقط كلاس bomb را فعال مي كنه ببخشيد