Witam, pracowałem nad zdarzeniami, a dokładnie nad przeszkodami, przeszkody działają mi, ale tak jak tego nie chce, a mianowicie jak rzepy...
fragment kodu programu;
///Kierowanie 1 gracz///
if (Dialog.dotyk(ob1,ob1_X, ob1_Y)){
if (key[KEY_LEFT]){
ob1_X--;
if (ob1_X<0 )
ob1_X++;
}
if (key[KEY_RIGHT]){
ob1_X++;
if (ob1_X>Xs-xk)
ob1_X--;
}
if (key[KEY_DOWN]){
ob1_Y++;
if (ob1_Y>Ys-yk)
ob1_Y--;
}
if (key[KEY_UP]){
ob1_Y--;
if (ob1_Y<0)
ob1_Y++;
}
}
///////////////////
//Kierowanie 2 gracz//
if (Dialog.dotyk(ob2,ob2_X, ob2_Y)){
if (key[KEY_A]){
ob2_X--;
if (ob2_X<0)
ob2_X++;
}
if (key[KEY_D]){
ob2_X++;
if (ob2_X>Xs-xk)
ob2_X--;
}
if (key[KEY_S]){
ob2_Y++;
if (ob2_Y>Ys-yk)
ob2_Y--;
}
if (key[KEY_W]){
ob2_Y--;
if (ob2_Y<0)
ob2_Y++;
}
}else {
if ((Dialog.dotyk(ob1,ob1_X, ob1_Y)== Dialog.dotyk(ob2,ob2_X, ob2_Y)))
rozrzucanie();
}
////////////
To jest struktura przeszkody:
/*
Name: Kropki
Copyright: 03-05-10
Author: Kajetan B********k
Date: 03-05-10 15:41
Description: For Funny
*/
#include <allegro.h>
#include <string>
//intall_mouse();
struct Okno{
int x,y; //POZYCJA
int h,w; //WIELKOŚĆ
int bg; //KOLOR
BITMAP *Okienko; //Strefa
public:
void rysuj(); //tworzenie
Okno(){x=100;y=100;w=100;h=100;bg=10;rysuj();}
Okno( int x1,int y1,int w1,int h1,int bg1);
~Okno(){delete [] Okienko;}
bool klick();
bool dotyk(BITMAP *OB, int Ox, int Oy);
bool dotyk2(BITMAP *OB, int &Ox, int &Oy);
//void usun(){destroy_bitmap(Okienko);}
};
void Okno::rysuj(){
Okienko = new BITMAP;
Okienko = create_bitmap(w,h);
clear_to_color(Okienko, bg);
}
Okno::Okno( int x1,int y1,int w1,int h1,int bg1)
{x=x1; y=y1; h=h1; w=w1; bg=bg1;rysuj();}
bool Okno::klick() {
if ((mouse_x>x) && (mouse_x<w+x) && ((mouse_y>=y) && (mouse_y<=h+y)) && mouse_b==1){
clear_keybuf();
return true;
}
else {
clear_to_color(Okienko, bg);
clear_keybuf();
return false;
}
}
bool Okno::dotyk(BITMAP *O, int Ox, int Oy){
int xo=Ox;
int yo=Oy;
int wo=O->w;
int ho=O->h;
if (xo+wo>x && xo<x+w)
if (yo+ho>y && yo<y+h)
return false;
return true; ///Mozna przejsc
}
bool Okno::dotyk2(BITMAP *O, int &Ox, int &Oy){
int xo=Ox;
int yo=Oy;
int wo=O->w;
int ho=O->h;
if (yo<y+h){
Oy--;
return true;
}
else if (yo+ho>y){
Oy++;
return true;
}
else if (xo<x+w){
Ox--;
return true;
}
else if (xo+wo>x){
Ox++;
return true;
}
else return false;
}
Jeśli moglibyście mi podsunąć jakiś pomysł, byłbym wdzięczny