Now I updated the code. I also tried to make some code for the enemy to fire at you, however, it tells me in the function that you must define enemybullets as a type, which I did, but it didn't tell me that in the function for EnemyBullets(). I thought I did this right, here's the updated code, see if I did the enemybullet code right. It tells me that the enemybullets variable must be a type, but I did that, not too sure where the code should be corrected:
; EnemyAI.bb - This is the source code for the Enemy Plane's Artificial Intelligence for the game, "Avoid the Plane" ; Hence, this is the action that you have to avoid from the plane to crash into you. Graphics 800,600 SeedRnd MilliSecs() ; Initialize the BackBuffer() and AutoMidHandle Default Settings SetBuffer BackBuffer() AutoMidHandle True ; Load the images for both your airplane, and the enemy airplane ; First, here are the types that are needed to make this program work properly Type enemyplane Field x,y ; These are the coordinate variables for the enemy airplane Field xv,yv ; These define the velocity of the enemy plane Field image ; This defines the actual image of the airplane End Type ; Now, here's the type for your airplane Type playerplane Field x,y ; These are the coordinate variables for your airplane Field collision ; This defines the amount of collisions that you have suffered Field image ; This defines your plane's image Field hits ; Number of hits on the enemy plane End Type ; Load the type for the bullets that the planes fire at each other Type bullet Field x,y ;The x and y coordinates Field image ;The bullet image End Type Type enemybullet Field x,y ; These are the x and y coordinates for the enemy's bullet Field image ; This is the enemy's bullet image End Type ; Below defines the constants used in this game Const PLAYERSPEED = 10 Const ENEMYSPEED = 5 ; These define the enemy's actions Global enemy.enemyplane = New enemyplane enemy\x = 400 enemy\y = 200 enemy\xv = Rand(-5,5) enemy\yv = Rand(-5,5) enemy\image = LoadImage("enemyplane.png") ; The following defines the creation of your airplane Global player.playerplane = New playerplane player\x = 400 player\y = 400 player\collision = 0 player\image = LoadImage("playerplane.png") ; The following loads the sounds for the plane engine, as well as a collision crash sound Global enginesound = LoadSound("engine.wav") Global collisionsound = LoadSound("crash.wav") Global bulletsound = LoadSound("bullet.wav") Global explosionsound = LoadSound("kaboom.wav") ; The following is the main loop for this program While Not KeyDown(1) ; Make sure that the screen is clear Cls ; Verify that all the text for this program is in the top-left corner Text 0,0, "Press <LEFT> to Move Left, Press <RIGHT> to Move Right" Text 0,12, "Press <UP> to Move Up, Press <DOWN> to Move Down " Text 0,24, "Press <SPACE BAR> to shoot bullets, Press <ESC> to Quit: " Text 0,48, "Collisions:\> " + player\collision Text 0,60, "Hits:\> " + player\hits ; Verify whether or not the enemy plane has hit the borders TestEnemyCollisions() ; Now, test the keyboard for this program TestKeys() SoundVolume enginesound, .25 LoopSound enginesound propsound = PlaySound(enginesound) CollisionCrash() If KeyDown(57) bullets.bullet = New bullet bullets\x = player\x bullets\y = player\y bullets\image = LoadImage ("bullet.png") PlaySound bulletsound EndIf UpDateBullets() EnemyBullets() ;Assign the enemy's image enemy\image = LoadImage("enemyplane.png") MaskImage enemy\image, 255 ,255,255 ; Once the player is above the enemy plane, move the enemy northwards towards the plane If player\y > enemy\y enemy\y = enemy\y + ENEMYSPEED EndIf ; Once the player is to the left of the enemy plane, move the enemy to the west If player\x < enemy\x enemy\x = enemy\x - ENEMYSPEED ChannelPan propsound, 1 EndIf ; Once the player is to the right of the enemy plane, move the enemy to the east If player\x > enemy\x enemy\x = enemy\x + ENEMYSPEED ChannelPan propsound, -1 EndIf ; Once the player is below the enemy plane, move the enemy to the south If player\y < enemy\y enemy\y = enemy\y - ENEMYSPEED ; Shoot bullets at the player's plane enemybullets.enemybullet = New enemybullet enemybullets\x = enemy\x enemybullets\y = enemy\y enemybullets\image = LoadImage("enemybullet.png") PlaySound bulletsound EndIf ; Now, keep the enemy in motion, as his objective is to collide with your airspace enemy\x = enemy\x + enemy\xv enemy\y = enemy\y + enemy\yv ; Once the enemy reaches the edges of the screen, move him into viewable range If enemy\x <= 0 enemy\x = 0 ElseIf enemy\x >= 800 enemy\x = 800 EndIf If enemy\y <= 0 enemy\y = 0 ElseIf enemy\y >= 600 enemy\y = 600 EndIf ; Then, draw the images of both the enemy's plane and yours DrawImage enemy\image,enemy\x,enemy\y DrawImage player\image,player\x,player\y Flip ; Slow the program down Delay 50 Wend ; This now ends the main loop of this part of the program ; Here is the function for the Enemy Plane's Collisions Function TestEnemyCollisions() ;If enemy hits a wall, reverse his velocity If enemy\x < 0 enemy\xv = -enemy\xv EndIf If enemy\x > 800 enemy\xv = - enemy\xv EndIf If enemy\y < 0 enemy\yv = -enemy\yv EndIf If enemy\y > 600 enemy\yv = -enemy\yv EndIf End Function ; On the same token, here is the function for you to move left to right to avoid the enemy Function TestKeys() If KeyDown(200) player\y = player\y - PLAYERSPEED EndIf If KeyDown(208) player\y = player\y + PLAYERSPEED EndIf If KeyDown(203) player\x = player\x - PLAYERSPEED ChannelPan propsound, -1 EndIf If KeyDown(205) player\x = player\x + PLAYERSPEED ChannelPan propsound, 1 EndIf End Function Function UpDateBullets() For bullets.bullet = Each bullet bullets\y = bullets\y - 5 DrawImage bullets\image,bullets\x,bullets\y If ImagesOverlap(enemy\image,enemy\x,enemy\y,bullets\image,bullets\x,bullets\y) SoundVolume explosionsound,.30 PlaySound explosionsound Cls Text 400,300, "Enemy down!" player\hits = player\hits + 1 Flip Delay 4000 ;Delete each of the bullets (if there are any) For bullets.bullet = Each bullet Delete bullets Next ;Choose the player's x and y coords player\x = 400 player\y = 400 ;Assign the player's image player\image = LoadImage("playerplane.png") ;Choose the enemy's beginning x and y coords enemy\x = 400 enemy\y = 200 ;Give the enemy a velocity that is between -7 and 7 enemy\xv = Rand (-5,5) enemy\yv = Rand (-5,5) Return EndIf If bullets\y < 0 Delete bullets EndIf Next End Function Function CollisionCrash() If (ImagesOverlap(player\image,player\x,player\y,enemy\image,enemy\x,enemy\y)) SoundVolume collisionsound, .35 PlaySound collisionsound Cls Text 300,300, "Oops, you crashed into the enemy!" Flip Delay 4000 ; Remove any bullets that may be out there For bullets.bullet = Each bullet Delete bullets Next player\collision = player\collision + 1 player\x = 400 player\y = 400 enemy\x = 400 enemy\y = 200 enemy\xv = Rand(-5,5) enemy\yv = Rand(-5,5) player\image = LoadImage("playerplane.png") EndIf End Function Function EnemyBullets() If (ImagesOverlap(player\image,player\x,player\y,enemybullets\image,enemybullets\x,enemybullets\y)) SoundVolume explosionsound, .35 PlaySound explosionsound Cls Text 400,300, "You've been hit!" Flip Delay 4000 ; Remove any of the bullets For bullets.bullet = Each bullet Delete bullets Next For enemybullet.enemybullets = Each enemybullets player\misses = player\misses + 1 player\x = 400 player\y = 400 enemy\x = 400 enemy\y = 200 enemy\xv = Rand(-5,5) enemy\yv = Rand(-5,5) player\image = LoadImage("playerplane.png") enemy\image = LoadImage("enemyplane.png") Next EndIf End Function