void update_enemies(){
for (i=0; i<max_enemies;i++)> if (enemy[i].isalive) {
if (enemy[i].y>SCREEN_H) {enemy[i].kill;}
else {enemy[i].y += enemy[i].speed;}
}
else {
enemy[i].revive(randx,randy);
}
}
}
void update_enemies() {
for (int j=0;j<max_enemies-1;j++)> if (!enemy[j].isdead()) {
draw_sprite(back_buffer, spaceenemy, enemy[j].getx(), enemy[j].gety());
if (!(enemy[j].gety()>scrn_h)) {
if (collide_detect(ship.getx(),ship.gety(),shipframe[ship.currentframe],enemy[j].getx(),enemy[j].gety(),spaceenemy)) {
textprintf_ex(back_buffer, font, 10, 150, makecol(255, 100, 200),-1, "SHIP AND ENEMY COLLISION!");
enemy[j].kill(true);
enemies_present--;
}
else {
enemy[j].sety(enemy[j].gety()+enemy[j].speed);
draw_sprite(back_buffer, spaceenemy, enemy[j].getx(), enemy[j].gety());
}
}
else {
enemy[j].kill(true);
enemies_present--;
}
}
else {
enemy[j].kill(false);
enemy[j].setx(rand()% scrn_w);
enemy[j].sety(0);
enemies_present++;
}
}
}
void update()
{
Enemy.Update();
Player.Update();
}
void Draw()
{
Enemy.Draw();
Player.Draw();
}
Class Enemy
{
//يجب ملئ المتغيرات بالقيم المناسبة في الدالة البانية
//
//دالة تحدد نقطة الانطلاق
void StartPoint()
{
//تعمل هذه الدالة على اعطاء قية عشوائية لكنها تبقى ضمن مساحة الشاشة،
X = (rand()% Screen.width);
Y = (rand()% Screen.Height);
}
void Update()
{
// عند مدخل الدالة لاول مرة نحدد النقطة التي نريد الانطلاق منها
if ( IsCreatedNow == true )
{
StartPoint();
// هذا المتغير يسمح لنا بعدم تغير نقطة البداية عند كل تحديثة
IsCreatedNow = false;
}
// نتحقق من ان الكائن في الشاشة
if(
(Y > 0 && (Y + MySprite.h)< Screen.Height)
&&
(X > 0 && (X + MySprite.w)< Screen.width)
)
{
IsDisplayed = true;
}
else
{
IsDisplayed = false;
}
//نقوم بالتحديث اذا كان الكائن حيا
if( IsDead == false )
{
// التحقق من التصادم فقط اذا كان حيا او ظاهرا على الشاشة
if ( (collidAgainst( Player.Fire)) == true && IsDisplayed == true )
{
IsDead = true;
}
// (Y)القيام بعمليات اخرى كتغير قيم
// كي يبدو ان اجسم يتحرك نحو الاسفل
Y+= Speed.Y;//من الافضل استعمال معادلة الحركة هنا و ذلك لتنقل بصفة منتظمة على جميع الاجهزة
}
}
}
Class Enemy
{
void Draw()
{
if( IsDisplayed == true )
{
//كمثال فقط و ليست الدالة بحد ذاتها
al_draw(screenbf, X,Y);
}
}
}
void StartPoint()
{
//تعمل هذه الدالة على اعطاء قية عشوائية لكنها تبقى ضمن مساحة الشاشة،
X = (rand()% Screen.width);
Y = (rand()% Screen.Height);
}
X = rand() % (Screen.width - MySprite.w);
void StartPoint()
{
//تعمل هذه الدالة على اعطاء قية عشوائية لكنها تبقى ضمن مساحة الشاشة،
X = rand() % (Screen.width - MySprite.h);
Y = -(rand() % Screen.Height);
}