Advertisement
Guest User

.cppsssss

a guest
Jan 19th, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.85 KB | None | 0 0
  1. #include "anim.h"
  2.  
  3. anim::anim():phases(0){
  4. id=tkt++;
  5. }
  6.  
  7. ---
  8. #include "attrib.h"
  9. ----
  10. #include "figura.h"
  11.  
  12. //{Figura ---------------------------------------------------------
  13.  
  14. int figura::tkt=0;
  15.  
  16. figura::figura(vect _v, bool v=true):posRel(_v),visible(v){
  17. id=tkt++;
  18. }
  19.  
  20. bool figura::setColor(t_RGB c){
  21. Color=c;
  22. }
  23.  
  24. int figura::getId(){
  25. return id;
  26. }
  27.  
  28. //}
  29.  
  30. //{Circulo ----------------------------------------------
  31. circulo::circulo(vect _v=0, float _r=0, bool _f=false):posRel(_v),rad(_r),filled(_f){}
  32.  
  33. float circulo::area(){
  34. return (M_PI*pow(rad,2.0));
  35. }
  36.  
  37. float circulo::perim(){
  38. return (2.0*M_PI*rad);
  39. }
  40. //}
  41. ------
  42. #include "lists.h"
  43.  
  44. //{ LISTA
  45. template <typename T>
  46. List<T>::List(int _egg=0):tam(0),first(nullptr),last(nullptr){
  47. if (_egg==39694694)
  48. {
  49. dev=true;
  50. cout<<"MRC-20/09/96-39694694-VT-SF-ARG"<<endl;
  51. }
  52. else
  53. dev=false;
  54. dummy=(T)NULL;
  55. }
  56.  
  57. template <typename T>
  58. List<T>::~List(){
  59. cout<<"Destructor de Lista tipo "<<this->type()<<": "<<endl;
  60. T aux;
  61. while(tam>0)
  62. {
  63. cout<<"Tam: "<<tam;
  64. aux=this->pop();
  65. cout<<" -> Elemento borrado ["<<aux<<"] -> Tam: "<<tam<<endl;
  66. }
  67. }
  68.  
  69. template <typename T>
  70. int List<T>::delIf(bool (*ptr)(T)){
  71. int tot=0;
  72. T aux;
  73. for (int i=0;i<tam;i++)
  74. {
  75. aux=(*this)[i];
  76. if ((*ptr)(aux))
  77. {
  78. tot++;
  79. this->del(i);
  80. }
  81. }
  82. return tot;
  83. }
  84.  
  85. template <typename T>
  86. bool List<T>::del(int _i){
  87. if (_i>=tam || _i<0) //si el nodo que busco no existe
  88. {
  89. cerr<<"Out of Bounds"<<endl;
  90. return false;
  91. }
  92. if (_i==0 && tam>0) //si es el primero
  93. {
  94. this->pop();
  95. return true;
  96. }
  97.  
  98. Node<T>* aux=first;
  99. for (int x=0;x<_i;x++)
  100. aux=aux->sig;
  101. tam--;
  102. aux->ant->sig=aux->sig;
  103. if (aux->sig!=nullptr)
  104. aux->sig->ant=aux->ant;
  105. delete aux;
  106. return true;
  107. }
  108.  
  109. template <typename T>
  110. List<T> List<T>::reversed(){
  111. List<T> aux;
  112. for (int i=0;i<tam;i++)
  113. {
  114. aux.push((*this)[i]);
  115. }
  116. return aux;
  117. }
  118.  
  119. template <typename T>
  120. void List<T>::reverseList(){
  121. List<T> aux=(*this);
  122. (*this)=aux.reversed();
  123. }
  124.  
  125. template <typename T>
  126. List<T> List<T>::sorted(){
  127. List<T> aux=(*this);
  128. aux.sortList();
  129. return aux;
  130. }
  131.  
  132. template <typename T>
  133. void List<T>::sortList(){
  134. T aux;
  135. for (int i=0;i<tam-1;i++) //burbujeo
  136. {
  137. for (int j=i+1;j<tam;j++)
  138. {
  139. if ((*this)[i]>(*this)[j])
  140. {
  141. aux=(*this)[i];
  142. (*this)[i]=(*this)[j];
  143. (*this)[j]=aux;
  144. }
  145. }
  146. }
  147. }
  148.  
  149. template <typename T>
  150. int List<T>::length(){
  151. return tam;
  152. }
  153.  
  154. template <typename T>
  155. string List<T>::type(){
  156. return first->type();
  157. }
  158.  
  159. template <typename T>
  160. bool List<T>::append(T _e){
  161. Node<T>* node=nullptr;
  162. node=new Node<T>(_e);
  163. if (node==nullptr){return false;}
  164.  
  165. tam++;
  166. if (first==nullptr) //tam==0
  167. {
  168. first=node;
  169. last=node;
  170. }
  171. else
  172. {
  173. last->sig=node;
  174. node->ant=last;
  175. last=node;
  176. }
  177.  
  178. return true;
  179. }
  180.  
  181. template <typename T>
  182. bool List<T>::push(T _e){
  183. Node<T>* node=nullptr;
  184. node=new Node<T>(_e);
  185. if (node==nullptr){return false;}
  186.  
  187. tam++;
  188. if (first==nullptr) //tam==0
  189. {
  190. first=node;
  191. last=node;
  192. }
  193. else
  194. {
  195. node->sig=first;
  196. first->ant=node;
  197. first=node;
  198. }
  199.  
  200. return true;
  201. }
  202.  
  203. template <typename T>
  204. bool List<T>::insertNode(T _e, int _i=0){
  205.  
  206. if (_i<0 || _i>tam){cerr<<"Index out of bounds"<<endl;return false;}
  207.  
  208. if (_i==tam){return append(_e);}
  209. if (_i==0){return push(_e);}
  210.  
  211. Node<T>* node=nullptr;
  212. node=new Node<T>(_e);
  213. if (node==nullptr){return false;}
  214.  
  215. Node<T>* aux=first;
  216. for (int x=0;x<_i;x++)
  217. {
  218. aux=aux->sig;
  219. }
  220. tam++;
  221. aux->ant->sig=node;
  222. node->ant=aux->ant;
  223. node->sig=aux;
  224. aux->ant=node;
  225.  
  226. return true;
  227. }
  228.  
  229. template <typename T>
  230. bool List<T>::inOrder(T _e){
  231.  
  232. if (tam==0){return push(_e);}
  233.  
  234. //global function type resolver, returns false and cerrs if the type is not defined watchhhhhhhhhhhh
  235.  
  236. Node<T>* node=nullptr;
  237. node=new Node<T>(_e);
  238. if (node==nullptr){return false;}
  239.  
  240. Node<T>* aux=first;
  241. int x=0;
  242. for (x=0;x<tam && aux->data<_e;x++)
  243. {
  244. aux=aux->sig;
  245. }
  246.  
  247. return insertNode(_e,x);
  248. }
  249.  
  250. template <typename T>
  251. T List<T>::pop(){
  252. if(tam==0){cerr<<"EMPTY"<<endl;return (T)(NULL);}
  253. T dat=first->data;
  254. Node<T>* aux;
  255. if (first->sig!=nullptr)
  256. first->sig->ant=nullptr;
  257. tam--;
  258. aux=first;
  259. first=first->sig;
  260. delete aux;
  261. if (first==nullptr)
  262. last=nullptr;
  263. return dat;
  264. }
  265.  
  266. template <typename T>
  267. void List<T>::printSlice(int _b, int _e, int _s=1){ //begin end step
  268. if (_b<0 || _e>=tam)
  269. {
  270. cerr<<"Out of bounds"<<endl;
  271. return;
  272. }
  273. cout<<"[";
  274. for (int x=_b;x<_e;x+=_s)
  275. {
  276. cout<<(*this)[x];
  277. if (x+_s<_e)
  278. {
  279. cout<<", ";
  280. }
  281. }
  282. cout<<"]"<<endl;
  283. }
  284.  
  285. template <typename T>
  286. void List<T>::printSlice(int _b){
  287. printSlice(_b,tam,1);
  288. }
  289.  
  290. template <typename T>
  291. void List<T>::printSlice(){
  292. printSlice(0,tam,1);
  293. }
  294.  
  295. template <typename T>
  296. void List<T>::print(){
  297. printSlice();
  298. }
  299.  
  300. template <typename T>
  301. ostream& operator<<(ostream& os, List<T>& _L){
  302. os<<"[";
  303. for (int x=0;x<_L.length();x++)
  304. {
  305. os<<_L[x];
  306. if (x<_L.length()-1)
  307. {
  308. cout<<", ";
  309. }
  310. }
  311. os<<"]";
  312. return os;
  313. }
  314.  
  315. template <typename T>
  316. istream& operator>>(istream& is, List<T>& _L){
  317. T aux;
  318. is>>aux;
  319. Node<T> n(aux);
  320. if (n.type()==_L.type() && n.type()!="Unknown")
  321. _L.append(aux);
  322. else
  323. cerr<<"Type missmatch"<<endl;
  324. return is;
  325. }
  326.  
  327. template <typename T>
  328. T& List<T>::operator[](int _i){
  329. dummy=(T)NULL;
  330. if(_i>=tam || _i<0)
  331. {
  332. cerr<<"Index out of bounds"<<endl;
  333. return dummy;
  334. }
  335. Node<T>* aux=first;
  336. for (int x=0;aux!=nullptr && aux->sig!=nullptr && x<_i;x++)
  337. {
  338. aux=aux->sig;
  339. }
  340.  
  341. return aux->data;
  342. }
  343.  
  344. template <typename T>
  345. List<T> List<T>::operator+(List<T> _L){
  346. List<T> retL;
  347. for (int i=0;i<tam;i++)
  348. {
  349. retL.append((*this)[i]);
  350. }
  351. for (int i=0;i<_L.tam;i++)
  352. {
  353. retL.append(_L[i]);
  354. }
  355. return retL;
  356. }
  357.  
  358. template <typename T>
  359. List<T> List<T>::operator/(List<T> _L){
  360. List<T> retL;
  361. int a,b,i;
  362. for (i=0,a=0,b=0;i<tam+_L.tam;i++)
  363. {
  364. if (a<tam)
  365. {
  366. retL.append((*this)[a++]);
  367. }
  368. if (b<_L.tam)
  369. {
  370. retL.append(_L[b++]);
  371. }
  372. }
  373. return retL;
  374. }
  375.  
  376. template <typename T>
  377. void List<T>::operator=(List<T>& _L){
  378. bool flag=true;
  379. for (int i=0;i<_L.tam && flag;i++)
  380. {
  381. flag=this->append(_L[i]);
  382. }
  383. tam=_L.tam;
  384. }
  385.  
  386.  
  387. //}
  388.  
  389. //----------------------------------------------------------------------------------------------------------------------
  390.  
  391. //{ NODO
  392.  
  393. template <typename T>
  394. Node<T>::Node(T _d){
  395. data=_d;
  396. sig=nullptr;
  397. ant=nullptr;
  398. }
  399.  
  400. template <typename T>
  401. void Node<T>::printDet(){
  402. cout<<
  403. "["<<ant<<"]->"<<
  404. data<<"->["<<sig<<"]";
  405. }
  406.  
  407. template <typename T>
  408. bool Node<T>::operator<(Node _n){
  409. return (data<_n.data);
  410. }
  411.  
  412. template <typename T>
  413. bool Node<T>::operator>(Node _n){
  414. return (data<_n.data);
  415. }
  416.  
  417. template <typename T>
  418. bool Node<T>::operator<=(Node _n){
  419. return (data<=_n.data);
  420. }
  421. template <typename T>
  422. bool Node<T>::operator>=(Node _n){
  423. return (data<=_n.data);
  424. }
  425.  
  426. template <typename T>
  427. bool Node<T>::operator==(Node _n){
  428. return (data==_n.data);
  429. }
  430.  
  431. template <typename T>
  432. bool Node<T>::operator!=(Node _n){
  433. return (data!=_n.data);
  434. }
  435.  
  436. template <typename T>
  437. ostream& operator<<(ostream& os, Node<T>& _N){
  438. return os<<_N.getDat();
  439. }
  440.  
  441. template <typename T>
  442. string Node<T>::type(){
  443. string res="Unknown";
  444. string cmp=(string)(typeid(data).name());
  445. if (cmp==(string)(typeid(int).name())){res="Integer";}
  446. if (cmp==(string)(typeid(double).name())){res="Double";}
  447. if (cmp==(string)(typeid(float).name())){res="Float";}
  448. if (cmp==(string)(typeid(char).name())){res="Character";}
  449. if (cmp==(string)(typeid(short).name())){res="Short";}
  450. if (cmp==(string)(typeid(long).name())){res="Long";}
  451. if (cmp==(string)(typeid(long long).name())){res="Long Long";}
  452. if (cmp==(string)(typeid(long double).name())){res="Long Double";}
  453. if (cmp==(string)(typeid(string).name())){res="String";}
  454. if (cmp==(string)(typeid(bool).name())){res="Boolean";}
  455.  
  456. return res;
  457. }
  458.  
  459. template <typename T>
  460. T Node<T>::getDat(){
  461. return data;
  462. }
  463.  
  464. //}
  465. ---
  466. #include "mainFrame.h"
  467. //#include <graphics.h>
  468.  
  469. mainFrame::mainFrame(char* path=(char*)"C:\\path\\path")
  470. {
  471. item_count=0;
  472. //arr(0);
  473. //int gd=DETECT,gm=0;
  474. //initgraph(&gd,&gm,path);
  475. }
  476.  
  477. mainFrame::~mainFrame(){
  478.  
  479.  
  480.  
  481. }
  482.  
  483. int mainFrame::list_items(){
  484. int i;
  485. for (i=0;i<item_count;i++)
  486. {
  487. cout << (i+1) << ") " ;
  488. arr[i]->pres();
  489. }
  490. return i;
  491. }
  492.  
  493. bool mainFrame::add(Object _obj){
  494. Object* obj = new Object(_obj);
  495. arr.append(obj);
  496. item_count++;
  497. return true;
  498. }
  499. ----
  500. #include "objects.h"
  501.  
  502. //{Object -------------------------------------
  503. int Object::tkt=0;
  504.  
  505. Object::Object(string _n="", string _d=""):name(_n),desc(_d){
  506. id=tkt++;
  507. }
  508.  
  509. void Object::set_desc(string _d){
  510. desc=_d;
  511. }
  512.  
  513. void Object::set_name(string _n){
  514. name=_n;
  515. }
  516.  
  517. string Object::get_name(){
  518. return name;
  519. }
  520. string Object::get_desc(){
  521. return desc;
  522. }
  523.  
  524. void Object::pres(){
  525. cout<<"Object: "<<desc<<endl;
  526. }
  527.  
  528. //}
  529.  
  530.  
  531. //{fObject ------------------------------------
  532. fObject::fObject(vect _v=0, string _n="", string _d=""):pos(_v){
  533. this->set_name(_n);
  534. this->set_desc(_d);
  535. }
  536.  
  537. void fObject::pres(){
  538. cout<<"fObject "<<desc<<endl;
  539. }
  540.  
  541. //}
  542. ----
  543. #include "sprite.h"
  544.  
  545. sprite::sprite():cont(0){
  546. id=tkt++;
  547. }
  548.  
  549. int sprite::getCont(){
  550. return cont;
  551. }
  552.  
  553. bool sprite::add(figura _f){
  554. if (arr.append(_f))
  555. {
  556. cont++;
  557. return true;
  558. }
  559. else
  560. return false;
  561. }
  562.  
  563. int sprite::draw(){
  564. int ret;
  565. for (int i=0;i<cont;i++)
  566. {
  567. ret+=arr[i].draw();
  568. }
  569. return ret;
  570. }
  571.  
  572. int sprite::del(){
  573. int ret;
  574. for (int i=0;i<cont;i++)
  575. {
  576. ret+=arr[i].del();
  577. }
  578. return ret;
  579. }
  580. ----
  581. #include "vect.h"
  582.  
  583. #define NULL_VECT
  584.  
  585. vect::vect(float _x=0, float _y=0, float _z=0):x(_x),y(_y),z(_z){}
  586.  
  587. static float vect::Mod(vect v){
  588. return v.getMod();
  589. }
  590.  
  591. static float vect::Dist(vect v1, vect v2){
  592. return v1.dist(v2);
  593. }
  594.  
  595. static float vect::Mod(float x=0, float y=0, float z=0){
  596. vect v(x,y,z);
  597. return v.getMod();
  598. }
  599.  
  600. double vect::getMod(){
  601. return sqrt(pow(x,2)+pow(y,2)+pow(z,2));
  602. }
  603.  
  604. float vect::getX(){
  605. return x;
  606. }
  607.  
  608. float vect::getY(){
  609. return y;
  610. }
  611.  
  612. float vect::getZ(){
  613. return z;
  614. }
  615.  
  616. float vect::dist(vect v){
  617. return Mod( (*this) - v );
  618. }
  619.  
  620. void vect::setVal(float _x=0, float _y=0, float _z=0){
  621. x=_x;
  622. y=_y;
  623. z=_z;
  624. }
  625.  
  626. vect vect::operator+(vect v){
  627. vect res(x+v.x,y+v.y,z+v.z);return res;
  628. }
  629.  
  630. vect vect::operator-(vect v){
  631. vect res(x-v.x,y-v.y,z-v.z);return res;
  632. }
  633.  
  634. vect vect::operator*(vect v){
  635. return (x*v.x+y*v.y+z*v.z);
  636. }
  637.  
  638. void vect::operator=(float mod){
  639. x=mod;
  640. y=0;
  641. z=0;
  642. }
  643.  
  644. ostream& operator<<(ostream& os, vect _v){
  645. /*depends on final properties*/
  646. return os;
  647. }
  648.  
  649. istream& operator>>(istream& is, vect& _v){
  650. /*depends on final properties*/
  651. return is;
  652. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement