Doom Game
Doom Game
SUBMITTED TO
ASSISI
CENTRAL SCHOOL
Submitted By:-
Project Guide:-
K.M Fawaz Mr.vineeth
SOFTWARE
FOR
DOOM GAME
Tools Used
Developed At
ASSISI CENTRAL SCHOOL
CERTIFICATE
This to certify that the project report entitled “DOOMS DAY GAME”
submitted by KM FAWAZ SRduring the academic year 2022-2023 is a bonafied piece
of work conducted under my supervision and guidance. The data sources have been
duly acknowledged.
I wish him/her success in all his/her future endeavours.
SUPERVISED BY
(Principal)
Sr.Shanti willma d almeda (ProjectGuide)
Mr. vineeth
PREFACE
PREFACE
Dedicated
To
The brave hero’s of my country who sacrificed their lives for freedom, security and
integrity of mother India, upkeeping the honour of our tricolor.
Their family members who suffered for our future.
My dear parents and my respected teachers.
INDEX
INDEX
1. Acknowledgement
2. Requirements Analysis
3. Feasibility Study
4. Coding
5. Output Screen
6. System Specifications
7. Bibliography
ACKNOWLEDGEMENT
ACKNOWLEDGEMENT
K.M Fawaz
REQUIRMENT ANALYSIS
Proposed system
2. Benefits
Reduces stress and depression and improve mood and feel relaxed .
3. Free to play
U don’t have to pay to play u can easily get it from and web or store.
4. How to download
First download the game rar file for web and u need to extract the file then u need to
run main.py file and you are ready to play.
5. Data-connection
No network is required to run the game this is a offline game u can play anywhere at
anytime.
6. User-friendly Software
7. Flexibility
The system is more flexible than the manual system being used presently.
8. How to play
W|A|S|D keys is used for movement of player and left click is used for firing
FEASIBILITY STUDY
FEASIBILITY STUDY
During the course of completion of this project work, the complete analysis of proposed
system was done. In the analysis task, a complete care about the feasibility of the proposed
system was taken. The following feasibility analyses were carried out during the course of
this project work on call management system for customer care:
1. Economical feasibility
2. Technical feasibility
3. Operational feasibility
Economical Feasibility:-
Economic analysis is the most frequently used method for evaluating the effectiveness
of a candidate system. The proposed system is economically feasible because the benefits
and the savings that are expected from a candidate system outweigh the cost incurred. In
this case we are getting the intangible benefits in terms of low cost of maintenance of data,
less redundancy and getting the quick results.
Technical Feasibility:-
The existing Hardware and Software facilities support the proposed system. Computer
and storage media are available and software can be developed.
Hardware configuration:
a) Processor : intel pentinium gold
b) Memory : 2 GB RAM
c) HD capacity : 128 gb
Software configuration:-
a) Operating system : Windows 7,10
b) Back end : pygame
c) Front end : Python
There is nothing which is not technically feasible.
Operational feasibility:-
As in the case of present system the entire work is being done manually. So the data
being scattered, information retrieval becomes difficult and maintaining database is also very
tedious. In case of proposed system, entire work will be done automatically. So the above
details regarding the feasibility study show that the design of the proposed system is very
effective.
CODING
import pygame as pg
import math
class RayCasting:
self.game = game
self.ray_casting_result = []
self.objects_to_render = []
self.textures = self.game.object_renderer.wall_textures
def get_objects_to_render(self):
self.objects_to_render = []
import pygame as pg
import math
class RayCasting:
def __init__(self, game):
self.game = game
self.ray_casting_result = []
self.objects_to_render = []
def get_objects_to_render(self):
self.objects_to_render = []
import math
class RayCasting:
self.ray_casting_result = []
self.objects_to_render = []
def get_objects_to_render(self):
self.objects_to_render = []
import pygame as pg
import math
class RayCasting:
self.game = game
self.ray_casting_result = []
self.objects_to_render = []
self.textures = self.game.object_renderer.wall_textures
def get_objects_to_render(self):
self.objects_to_render = []
for ray, values in enumerate(self.ray_casting_result):
else:
wall_column = self.textures[texture].subsurface(
SCALE, texture_height
def ray_cast(self):
self.ray_casting_result = []
texture_vert, texture_hor = 1, 1
ox, oy = self.game.player.pos
sin_a = math.sin(ray_angle)
cos_a = math.cos(ray_angle)
# horizontals
delta_depth = dy / sin_a
dx = delta_depth * cos_a
for i in range(MAX_DEPTH):
if tile_hor in self.game.map.world_map:
break
x_hor += dx
y_hor += dy
depth_hor += delta_depth
# verticals
x_vert, dx = (x_map + 1, 1) if cos_a > 0 el se (x_map - 1e-6,
-1)
delta_depth = dx / cos_a
dy = delta_depth * sin_a
for i in range(MAX_DEPTH):
if tile_vert in self.game.map.world_map:
texture_vert = self.game.map.world_map[tile_vert]
break
x_vert += dx
y_vert += dy
depth_vert += delta_depth
y_vert %= 1
else:
# projection
ray_angle += DELTA_ANGLE
def update(self):
self.ray_cast()
self.get_objects_to_render()
import math
# game settings
HALF_WIDTH = WIDTH // 2
HALF_HEIGHT = HEIGHT // 2
FPS = 0
PLAYER_ANGLE = 0
PLAYER_SPEED = 0.004
PLAYER_ROT_SPEED = 0.002
PLAYER_SIZE_SCALE = 60
PLAYER_MAX_HEALTH = 150
MOUSE_SENSITIVITY = 0.0002
MOUSE_MAX_REL = 40
MOUSE_BORDER_LEFT = 100
FOV = math.pi / 3
HALF_FOV = FOV / 2
NUM_RAYS = WIDTH // 2
HALF_NUM_RAYS = NUM_RAYS // 2
MAX_DEPTH = 20
TEXTURE_SIZE = 256
HALF_TEXTURE_SIZE = TEXTURE_SIZE // 2
SYSTEM SPECIFICATIONS
SYSTEM SPECIFICATIONS
HARDWARE SPECIFICATIONS
The following is the hardware specification of the system on which the software has
been developed:-
SOFTWARE SPECIFICATIONS
Front End Used : Python