0% found this document useful (0 votes)
360 views15 pages

Coal Project Report

This document provides a project report for a bubble shooter game created by a group of 4 students. It includes an introduction describing the game, requirements including hardware and software needed, and details of the system implementation including code snippets. Testing and screenshots are also mentioned but not included. The game uses labels and conditional jumps to update logic and display, allows the user to move a player and shoot arrows to hit balloons, tracks hits, misses and score.

Uploaded by

huzaifa.elahi101
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
360 views15 pages

Coal Project Report

This document provides a project report for a bubble shooter game created by a group of 4 students. It includes an introduction describing the game, requirements including hardware and software needed, and details of the system implementation including code snippets. Testing and screenshots are also mentioned but not included. The game uses labels and conditional jumps to update logic and display, allows the user to move a player and shoot arrows to hit balloons, tracks hits, misses and score.

Uploaded by

huzaifa.elahi101
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 15

PROJECT REPORT

COAL LAB (CEL-324)

BS(CS)-3B
Group Members
Name Enrollment
1. Moaaz Rafique
02-134192-064
2. Shaheer Suleman
02-134192-009
3.Ammar Anis
02-134192-073
4. Haroon Khalid Janjua
02-134192-048

Submitted to:
Muslim Ahmed

BAHRIA UNIVERSITY KARACHI CAMPUS


Department of Computer Science

1|Page
TABLE OF CONTENT

1. Introduction.......................................................................................................................3

2. Requirements Specifications.............................................................................................4

3. System Implementation.....................................................................................................5

4. Testing................................................................................................................................14

5. Sample Screenshots Of System..........................................................................................15

2|Page
INTRODUCTION

Project Description[1.1]
This project is an attempt to create the board game and implement some sort of
machine learning into the game. These goals were not met but the results still proved
interesting. The game was fully implemented but a learning Neural Network was not
implemented by the end of the project. . The first Bubble Shooter game, created in 2002, was
ported to iOS in 2010 and Android in 2012. With the rise of the mobile phone and highly
accessible casual gaming, Bubble Shooter games have grown in popularity and success. The
object of the game is simple and engaging: clear the playing field by forming groups of three
or more same-colored bubbles.
Bubble shooter games are a slightly newer arcade game concept. The objective is to form
groups of 3 matching bubbles and ultimately clear the screen of all bubbles. The more
bubbles the player can clear, the more points they win. For you, the game’s graphics can be
personalized to deliver a unique gaming experience to the audience.

Project Features[1.2]
Result of the Project Will Be making of a bubble shooting game
Phases
o Asking User for username and password if needed
o Asking User to Enter Data in Array
o Asking User to Search for Specific Element in Array
o Searching and Displaying User Given Element Based Upon Binary Search Algorithm
o Displaying User Given Element if found in Array otherwise Displaying “this username is
already taken”
o Asking User to play again or Exit the Program

3|Page
REQUIREMENTS SPECIFICATION

Hardware Requirements[2.1]
 Dual Core x86 Processor or above
 1 GB RAM minimum or above.
 Minimum 40 GB Hardware required.

Software Requirements[2.2]
 Microsoft Windows 7 or Above required
 Emu8086 (v4.08) Emulator

4|Page
SYSTEM IMPLEMENTATION

Introduction[3.1]

It’s a balloon shooting game where player shoots an arrow to hit the balloon and when the
balloon gets hit it beeps and a new balloon pops up and you get to shoot another arrow
towards it. I used few label and conditional jump statement to update logic and display
everything. You have selected number of misses, if you equal that number, game will end at
that spot.

Code[3.2]
;;==========================================================================
===;;
;; ;;
;; Balloon Shooting Game ;;
;; ;;
;; ;;
;; ;;
;; ;;
;; ;;
;; ;;
;;==========================================================================
===;;

.model large
.data

exit db 0
player_pos dw 1760d ;position of player

arrow_pos dw 0d ;position of arrow


arrow_status db 0d ;0 = arrow ready to go else not
arrow_limit dw 22d ;150d

loon_pos dw 3860d ;3990d


loon_status db 0d

;direction of player
;up=8, down=2
direction db 0d

state_buf db '00:0:0:0:0:0:00:00$' ;score veriable


hit_num db 0d
hits dw 0d
miss dw 0d

5|Page
game_over_str dw ' ',0ah,0dh
dw ' | |',0ah,0dh
dw ' |---------------|',0ah,0dh
dw ' | ^ Score ^ |',0ah,0dh
dw ' |_____|',0ah,0dh
dw ' ',0ah,0dh
dw ' ',0ah,0dh
dw ' ',0ah,0dh
dw ' ',0ah,0dh
dw ' ',0ah,0dh
dw ' ',0ah,0dh
dw ' Game Over',0ah,0dh
dw ' Press Enter to start again$',0ah,0dh

game_start_str dw ' ',0ah,0dh

dw ' ',0ah,0dh
dw ' ',0ah,0dh
dw ' ',0ah,0dh
dw ' ====================================================',0ah,0dh
dw ' || ||',0ah,0dh
dw ' || * Balloon Shooting Game * ||',0ah,0dh
dw ' || ||',0ah,0dh
dw ' ||--------------------------------------------------||',0ah,0dh
dw ' || ||',0ah,0dh
dw ' || ||',0ah,0dh
dw ' || ||',0ah,0dh
dw ' || Use up and down key to move player ||',0ah,0dh
dw ' || and space button to shoot ||',0ah,0dh
dw ' || ||',0ah,0dh
dw ' || Press Enter to start ||',0ah,0dh
dw ' || ||',0ah,0dh
dw ' || ||',0ah,0dh
dw ' ====================================================',0ah,0dh
dw '$',0ah,0dh

.code
main proc
mov ax,@data
mov ds,ax

mov ax, 0B800h


mov es,ax
jmp game_menu ;display main menu
main_loop: ;update logic and display everything

6|Page
;check any key is pressed
mov ah,1h
int 16h ;go if pressed
jnz key_pressed
jmp inside_loop ;or just continue

inside_loop: ;checking every thing

cmp miss,9 ;if baloon miss 9 times.go to game over section


jge game_over

mov dx,arrow_pos ;checking collitions


cmp dx, loon_pos
je hit

cmp direction,8d ;update player position


je player_up
cmp direction,2d ;up or down based on direction veriable
je player_down

mov dx,arrow_limit ;hide arrow


cmp arrow_pos, dx
jge hide_arrow

cmp loon_pos, 0d ;check missed loon


jle miss_loon
jne render_loon

hit: ;play sound if hit


mov ah,2
mov dx, 7d
int 21h

inc hits ;update score

lea bx,state_buf ;display score


call show_score
lea dx,state_buf
mov ah,09h
int 21h

mov ah,2 ;new line


mov dl, 0dh
int 21h

jmp fire_loon ;new loon pops up

render_loon: ;draw loon

7|Page
mov cl, ' ' ;hide old loon
mov ch, 1111b

mov bx,loon_pos
mov es:[bx], cx

sub loon_pos,160d ;and draw new one in new position


mov cl, 15d
mov ch, 1101b

mov bx,loon_pos
mov es:[bx], cx

cmp arrow_status,1d ;check any arrow to rander


je render_arrow
jne inside_loop2

render_arrow: ;render arrow

mov cl, ' '


mov ch, 1111b

mov bx,arrow_pos ;hide old position


mov es:[bx], cx

add arrow_pos,4d ;draw new position


mov cl, 26d
mov ch, 1001b

mov bx,arrow_pos
mov es:[bx], cx

inside_loop2:

mov cl, 125d ;draw player


mov ch, 1100b

mov bx,player_pos
mov es:[bx], cx

cmp exit,0
je main_loop ;end main loop
jmp exit_game

jmp inside_loop2

8|Page
player_up: ;hide player old position
mov cl, ' '
mov ch, 1111b

mov bx,player_pos
mov es:[bx], cx

sub player_pos, 160d ;set new postion of player


mov direction, 0

jmp inside_loop2 ;it will draw in main loop

player_down:
mov cl, ' ' ;same as player up
mov ch, 1111b ;hide old one and set new postion

mov bx,player_pos
mov es:[bx], cx

add player_pos,160d ;and main loop draw that


mov direction, 0

jmp inside_loop2

key_pressed: ;input hanaling section


mov ah,0
int 16h

cmp ah,48h ;go upKey if up button is pressed


je upKey
cmp ah, 50h
je downKey

cmp ah,39h ;go spaceKey if up button is pressed


je spaceKey

cmp ah,4Bh ;go leftKey (this is for debuging)


je leftKey

;if no key is pressed go to inside of loop


jmp inside_loop

leftKey: ;we use it for debuging


;jmp game_over
inc miss

lea bx,state_buf
call show_score

9|Page
lea dx,state_buf
mov ah,09h
int 21h

mov ah,2
mov dl, 0dh
int 21h
jmp inside_loop

upKey: ;set player direction to up


mov direction, 8d
jmp inside_loop

downKey:
mov direction, 2d ;set player direction to down
jmp inside_loop

spaceKey: ;shoot a arrow


cmp arrow_status,0
je fire_arrow
jmp inside_loop

fire_arrow: ;set arrow postion in player position


mov dx, player_pos ;so arrow fire from player postion
mov arrow_pos, dx

mov dx,player_pos ;when fire an arrow it also set limit


mov arrow_limit, dx ;of arrow. where it should be hide
add arrow_limit, 22d ;150

mov arrow_status, 1d ;set arrow status.It prevents multiple


jmp inside_loop ;shooting

miss_loon:
add miss,1 ;update score

lea bx,state_buf ;display score


call show_score
lea dx,state_buf
mov ah,09h
int 21h
;new line
mov ah,2
mov dl, 0dh
int 21h
jmp fire_loon

10 | P a g e
fire_loon: ;fire new balloon
mov loon_status, 1d
mov loon_pos, 3860d ;3990d
jmp render_loon

hide_arrow:
mov arrow_status, 0 ;hide arrow

mov cl, ' '


mov ch, 1111b

mov bx,arrow_pos
mov es:[bx], cx

cmp loon_pos, 0d
jle miss_loon
jne render_loon

jmp inside_loop2
;print game over screen
game_over:
mov ah,09h
;mov dh,0
mov dx, offset game_over_str
int 21h

mov cl, ' ' ;hide last of screen balloon


mov ch, 1111b
mov bx,arrow_pos

mov cl, ' ' ;hide player


mov ch, 1111b
mov bx,player_pos

;reset value ;update veriable for start again


mov miss, 0d
mov hits,0d

mov player_pos, 1760d

mov arrow_pos, 0d
mov arrow_status, 0d
mov arrow_limit, 22d ;150d

mov loon_pos, 3860d ;3990d

11 | P a g e
mov loon_status, 0d

mov direction, 0d
;wait for input
input:
mov ah,1
int 21h
cmp al,13d
jne input
call clear_screen
jmp main_loop

game_menu:
;game menu screen
mov ah,09h
mov dh,0
mov dx, offset game_start_str
int 21h
;wait for input
input2:
mov ah,1
int 21h
cmp al,13d
jne input2
call clear_screen

lea bx,state_buf ;display score


call show_score
lea dx,state_buf
mov ah,09h
int 21h

mov ah,2
mov dl, 0dh
int 21h

jmp main_loop

exit_game: ;end of our sweet game :)


mov exit,10d
main endp
;;--------------------------------------------------------------------;;
;; ;;
;; show score in same postion on screen ;;
;; using base pointer to get segment of veriable ;;
;; ;;

12 | P a g e
;;________________________;;

proc show_score
lea bx,state_buf
mov dx, hits
add dx,48d

mov [bx], 9d
mov [bx+1], 9d
mov [bx+2], 9d
mov [bx+3], 9d
mov [bx+4], 'H'
mov [bx+5], 'i'
mov [bx+6], 't'
mov [bx+7], 's'
mov [bx+8], ':'
mov [bx+9], dx

mov dx, miss


add dx,48d
mov [bx+10], ' '
mov [bx+11], 'M'
mov [bx+12], 'i'
mov [bx+13], 's'
mov [bx+14], 's'
mov [bx+15], ':'
mov [bx+16], dx
ret
show_score endp
;;--------------------------------------------------------------------;;
;; ;;
;; Clear the sceen ;;
;; Just set new text mood for avoiding complexicity ;;
;; ;;
;;________________________;;
clear_screen proc near
mov ah,0
mov al,3
int 10h
ret
clear_screen endp
end main

TESTING

Testing Methods[4.1]
13 | P a g e
We have tested the program with various different methods, by adding faulty
data to trying to access or change forms, variations and have used extensive
try catch methods to ensure that no data is vulnerable and the program runs
efficiently and smoothly no matter what.

SAMPLE SCREENSHOTS OF SYSTEM

14 | P a g e
15 | P a g e

You might also like