import GUI
%setpriority (2 ** 15 - 1)
var window := Window.Open ("position:center;center,graphics:1267;953,title:Army's Elite")
buttonchoose ("multibutton")
var ak_47_button, desert_eagle_button, done_button : int
var selection, map_choice : int
var mouse :
record
x, y, button, buttonUpDown, right, middle, left, reloading : int
end record
var active_gun, active_gun_firing, active_map, active_enemy, original_position, weapon_ammo, max_weapon_ammo, active_enemy_x, active_enemy_y : int
var ak_47 := Pic.FileNew ("weapon1.bmp")
var firing_ak_47 := Pic.FileNew ("firing ak-47.bmp")
var desert_eagle := Pic.FileNew ("deagle.bmp")
var firing_desert_eagale := Pic.FileNew ("firing_deagle.bmp")
var level6 := Pic.FileNew ("level6.bmp")
var baghdad := Pic.FileNew ("Baghdad.bmp")
var kabul := Pic.FileNew ("Kabul.bmp")
var skeleton := Pic.FileNew ("skel1.bmp")
var panda := Pic.FileNew ("panda1.bmp")
var weaponsound : array 1 .. 11 of string
:= init ("ak_47.wav", "deagle.wav", "glock.wav",
"m3.wav", "m4a1.wav", "mac10.wav", "mp5.wav", "p90.wav", "sg552.wav",
"tmp.wav", "usp.wav")
var x_displacement, y_displacement, firing_displacement_x, firing_displacement_y : int
var x_enemy, y_enemy : int
var enemy_alive : boolean := false
var weapon_class : int
var shot : boolean := false
var font : int
var titleName := Pic.FileNew ("maintitlename.bmp")
var if_reloading : boolean := false
var animation_counter : int := 0
var reloading_counter : int := 0
var weapon_sound : int
var reloadsound : string := "reload.wav"
var empty_sound : string := "empty.wav"
var score_int : int
var enemy_value : int
var enemy_presence : int := 0
var enemy_damage : int
var player_health : int := 100
var introduction := Pic.FileNew ("introduction.bmp")
var titlePic := Pic.FileNew ("maintitle.bmp")
font := Font.New ("serif:18:bold")
var font1 := Font.New ("serif:50") %fonts
var font2 := Font.New ("serif:30")
var font3 := Font.New ("serif:15")
var reloading_meter, hitting_time : int
var difficulty_choice, difficulty : int
var done, quitBtn : int
var file : int
var name : string
var getname : string
var getscore : int
var moving : int := 0
proc new_value
player_health := 100
animation_counter := 0
reloading_counter := 0
difficulty_choice := 0
end new_value
proc select_gun
put "Please select your gun"
put "enter 1 for AK_47"
put "enter 2 for Desert Eagle"
get selection
if selection = 1 then
active_gun := ak_47
active_gun_firing := firing_ak_47
x_displacement := 50
y_displacement := 450
firing_displacement_x := 40
firing_displacement_y := 450
original_position := 448
max_weapon_ammo := 30
weapon_ammo := max_weapon_ammo
weapon_class := 2
weapon_sound := 1
elsif selection = 2 then
active_gun := desert_eagle
active_gun_firing := firing_desert_eagale
x_displacement := -150
y_displacement := 430
firing_displacement_x := -250
firing_displacement_y := 500
weapon_class := 1
original_position := 431
max_weapon_ammo := 7
weapon_ammo := max_weapon_ammo
weapon_sound := 2
end if
end select_gun
proc select_map
put "Please select a level"
put "enter 1 for Baghdad"
put "enter 2 for Kabul"
get map_choice
if map_choice = 1 then
active_map := baghdad
active_enemy := skeleton
active_enemy_x := 36
active_enemy_y := 60
enemy_value := 10
score_int := -enemy_value
elsif map_choice = 2 then
active_map := kabul
active_enemy := panda
active_enemy_x := 46
active_enemy_y := 56
enemy_value := 8
score_int := -enemy_value
end if
end select_map
proc select_difficulty
put "Select a difficulty setting"
put "enter 1 for Private"
put "enter 2 for Corporal"
put "enter 3 for General"
get difficulty_choice
end select_difficulty
proc enemies_appear
if active_map = baghdad and enemy_alive = false then
randint (x_enemy, 209, 1008)
randint (y_enemy, 159, 429)
enemy_alive := true
elsif active_map = kabul and enemy_alive = false then
randint (x_enemy, 19, 1147)
randint (y_enemy, 114, 448)
enemy_alive := true
end if
Pic.SetTransparentColor (active_enemy, 23)
Pic.Draw (active_enemy, x_enemy, y_enemy, picMerge)
end enemies_appear
proc weapon_movement
Pic.Draw (active_map, 0, -80, picUnderMerge)
mousewhere (mouse.x, mouse.y, mouse.button)
Pic.SetTransparentColor (active_gun, 23)
if shot = false and if_reloading = false then
if mouse.y < original_position then
Pic.Draw (active_gun, mouse.x - x_displacement, mouse.y - y_displacement, picMerge)
Draw.Line (mouse.x - 2, mouse.y, mouse.x - 15, mouse.y, brightred) %Left line of crosshair
Draw.Line (mouse.x, mouse.y + 2, mouse.x, mouse.y + 15, brightred) %Top line of crosshair
Draw.Line (mouse.x + 2, mouse.y, mouse.x + 15, mouse.y, brightred) %Right line of crosshair
else
Pic.Draw (active_gun, mouse.x - x_displacement, original_position - y_displacement, picMerge)
Draw.Line (mouse.x - 2, original_position, mouse.x - 15, original_position, brightred) %Left line of crosshair
Draw.Line (mouse.x, original_position + 2, mouse.x, original_position + 15, brightred) %Top line of crosshair
Draw.Line (mouse.x + 2, original_position, mouse.x + 15, original_position, brightred) %Right line of crosshair
end if
end if
end weapon_movement
proc weapon_assist
if mouse.y < original_position and if_reloading = false then
Pic.Draw (active_gun, mouse.x - x_displacement, mouse.y - y_displacement, picMerge)
Draw.Line (mouse.x - 2, mouse.y, mouse.x - 15, mouse.y, brightred) %Left line of crosshair
Draw.Line (mouse.x, mouse.y + 2, mouse.x, mouse.y + 15, brightred) %Top line of crosshair
Draw.Line (mouse.x + 2, mouse.y, mouse.x + 15, mouse.y, brightred) %Right line of crosshair
elsif mouse.y > original_position and if_reloading = false then
Pic.Draw (active_gun, mouse.x - x_displacement, original_position - y_displacement, picMerge)
Draw.Line (mouse.x - 2, original_position, mouse.x - 15, original_position, brightred) %Left line of crosshair
Draw.Line (mouse.x, original_position + 2, mouse.x, original_position + 15, brightred) %Top line of crosshair
Draw.Line (mouse.x + 2, original_position, mouse.x + 15, original_position, brightred) %Right line of crosshair
end if
end weapon_assist
proc weapon_firing
if weapon_class = 1 then
if mouse.button = 1 and weapon_ammo > 0 and if_reloading = false then
shot := true
animation_counter := animation_counter + 1
else
shot := false
animation_counter := 0
end if
if animation_counter >= 20 and mouse.button = 0 or weapon_ammo = 0 then
animation_counter := 0
shot := false
end if
if mouse.button = 0 then
animation_counter := (animation_counter * 100) - 1
end if
if mouse.button = 1 and weapon_ammo = 0 then
reloading_meter := reloading_meter + 1
else
reloading_meter := 0
end if
if reloading_meter = 1 then
Music.PlayFileReturn (empty_sound)
end if
if animation_counter = 1 or animation_counter = 2 or animation_counter = 3 or animation_counter = 4
or animation_counter = 5 and Mouse.ButtonMoved ("up") and Mouse.ButtonMoved ("down") and if_reloading = false then
%mousewhere (mouse.x, mouse.y, mouse.button)
if mouse.y < original_position then
Pic.Draw (active_gun_firing, mouse.x - firing_displacement_x, mouse.y - firing_displacement_y, picMerge)
Draw.Line (mouse.x - 2, mouse.y, mouse.x - 15, mouse.y, brightred) %Left line of crosshair
Draw.Line (mouse.x, mouse.y + 2, mouse.x, mouse.y + 15, brightred) %Top line of crosshair
Draw.Line (mouse.x + 2, mouse.y, mouse.x + 15, mouse.y, brightred)
elsif mouse.y > original_position then
Pic.Draw (active_gun_firing, mouse.x - x_displacement, original_position - y_displacement, picMerge)
Draw.Line (mouse.x - 2, original_position, mouse.x - 15, original_position, brightred) %Left line of crosshair
Draw.Line (mouse.x, original_position + 2, mouse.x, original_position + 15, brightred) %Top line of crosshair
Draw.Line (mouse.x + 2, original_position, mouse.x + 15, original_position, brightred) %Right line of crosshair
end if
else
weapon_assist
end if
if animation_counter = 1 and weapon_ammo > 0 then
weapon_ammo := weapon_ammo - 1
Music.PlayFileReturn (weaponsound (weapon_sound))
end if
elsif weapon_class = 2 then
Pic.SetTransparentColor (active_gun_firing, 23)
if mouse.button = 1 and weapon_ammo > 0 and if_reloading = false then
shot := true
animation_counter := animation_counter + 1
elsif mouse.button = 0 then
shot := false
animation_counter := 0
end if
if animation_counter >= 3 or weapon_ammo = 0 then
animation_counter := 0
shot := false
end if
if mouse.button = 1 and weapon_ammo = 0 then
reloading_meter := reloading_meter + 1
else
reloading_meter := 0
end if
if reloading_meter = 1 then
Music.PlayFileReturn (empty_sound)
end if
if animation_counter = 1 or animation_counter = 2 or animation_counter = 3 and Mouse.ButtonMoved ("up") and Mouse.ButtonMoved ("down")
and if_reloading = false then
%mousewhere (mouse.x, mouse.y, mouse.button)
if mouse.y < original_position then
Pic.Draw (active_gun_firing, mouse.x - firing_displacement_x, mouse.y - firing_displacement_y, picMerge)
Draw.Line (mouse.x - 2, mouse.y, mouse.x - 15, mouse.y, brightred) %Left line of crosshair
Draw.Line (mouse.x, mouse.y + 2, mouse.x, mouse.y + 15, brightred) %Top line of crosshair
Draw.Line (mouse.x + 2, mouse.y, mouse.x + 15, mouse.y, brightred) %Right line of crosshair
elsif mouse.y > original_position then
Pic.Draw (active_gun_firing, mouse.x - x_displacement, original_position - y_displacement, picMerge)
Draw.Line (mouse.x - 2, original_position, mouse.x - 15, original_position, brightred) %Left line of crosshair
Draw.Line (mouse.x, original_position + 2, mouse.x, original_position + 15, brightred) %Top line of crosshair
Draw.Line (mouse.x + 2, original_position, mouse.x + 15, original_position, brightred) %Right line of crosshair
end if
else
weapon_assist
end if
if animation_counter = 1 and weapon_ammo > 0 then
weapon_ammo := weapon_ammo - 1
Music.PlayFileReturn (weaponsound (weapon_sound))
end if
end if
if shot and mouse.x > x_enemy and mouse.x < x_enemy + active_enemy_x and mouse.y > y_enemy and mouse.y < y_enemy + active_enemy_y then
enemy_alive := false
end if
if enemy_alive = true then
enemy_presence := enemy_presence + 1
elsif enemy_alive = false then
enemy_presence := 0
end if
if difficulty_choice = 1 then
randint (enemy_damage, 1, 9)
hitting_time := 25
elsif difficulty_choice = 2 then
randint (enemy_damage, 9, 15)
hitting_time := 20
elsif difficulty_choice = 3 then
randint (enemy_damage, 15, 20)
hitting_time := 15
end if
if enemy_presence >= hitting_time then
enemy_presence := 0
player_health := player_health - enemy_damage
end if
% put enemy_presence
% put player_health
% put enemy_alive
%put "COUNTER: ", animation_counter
%put "SHOT: ", shot
%put animation_counter
put hitting_time
end weapon_firing
proc reloading
if mouse.button = 100 and weapon_ammo < max_weapon_ammo then
animation_counter := 0
shot := false
reloading_counter := reloading_counter + 1
if_reloading := true
Draw.Box ((maxx div 2) - 50, maxy div 2 - 60, maxx div 2 + 57, maxy div 2 - 40, blue)
Draw.FillBox ((maxx div 2) - 49, maxy div 2 - 59, maxx div 2 - 49 + (reloading_counter * 7), maxy div 2 - 41, red)
else
if_reloading := false
reloading_counter := 0
end if
if reloading_counter = 9 then
Music.PlayFileReturn ("reload.wav")
end if
if reloading_counter >= 15 then
weapon_ammo := max_weapon_ammo
reloading_counter := 0
if_reloading := false
end if
end reloading
proc scoring
if enemy_alive = false then
score_int := score_int + enemy_value
end if
if animation_counter = 1 then
score_int := score_int + (weapon_class * -2)
end if
if score_int not= 0 and enemy_alive = false then
score_int := score_int + enemy_value + difficulty_choice
end if
end scoring
proc close_window
Window.Close (window)
GUI.Quit
end close_window
proc main_line
setpriority (2 ** 15 - 1)
loop
View.Set ("nooffscreenonly")
cls
select_map
select_gun
select_difficulty
Music.PlayFileReturn ("prepare.wav")
View.Set ("offscreenonly")
loop
cls
scoring
Draw.Text (intstr (weapon_ammo), maxx div 2, maxy - 20, font, blue)
Draw.Text ("Score: " + intstr (score_int), (maxx div 2) + 500, maxy - 20, font, blue)
locate (3, 4)
%put if_reloading, " ", reloading_counter
Draw.Text ("Health: " + intstr (player_health) + "%", (maxx div 2) - 630, maxy - 20, font, blue)
enemies_appear
weapon_movement
weapon_firing
reloading
View.Update
delay (5)
exit when player_health <= 0
end loop
cls
Draw.Text (intstr (weapon_ammo), maxx div 2, maxy - 20, font, blue)
Draw.Text ("Score: " + intstr (score_int), (maxx div 2) + 500, maxy - 20, font, blue)
locate (3, 4)
%put if_reloading, " ", reloading_counter
if player_health <= 0 then
Draw.Text ("Health: 0%", (maxx div 2) - 630, maxy - 20, font, blue)
end if
scoring
enemies_appear
weapon_movement
weapon_firing
reloading
View.Update
delay (500)
new_value
end loop
end main_line
%include "maintitle.t" %play the main intro
Music.PlayFileStop
introduction := Pic.Scale (introduction, 1267, 953)
Pic.Draw (introduction, 0, 0, picMerge)
done := GUI.CreateButton (maxx div 2, maxy div 2, 0, "PLAY",
main_line)
quitBtn := GUI.CreateButton (maxx div 2, maxy div 2 - 50, 0, "Quit", close_window)
loop
exit when GUI.ProcessEvent
end loop
|