From bda1e0c50956446c42623455d33ece28bae0e0b6 Mon Sep 17 00:00:00 2001 From: AnshCODEC <147970165+AnshCODEC@users.noreply.github.com> Date: Sun, 15 Oct 2023 13:21:53 +0530 Subject: [PATCH] 8bitgame --- The 8 bit game/8bitgame.py | 341 +++++++++++++++++++++++++++++++++++++ 1 file changed, 341 insertions(+) create mode 100644 The 8 bit game/8bitgame.py diff --git a/The 8 bit game/8bitgame.py b/The 8 bit game/8bitgame.py new file mode 100644 index 0000000..b462294 --- /dev/null +++ b/The 8 bit game/8bitgame.py @@ -0,0 +1,341 @@ +# Python program to demonstrate +# 8 bit game + + +import pygame +import sys +import random + + +# initialize the constructor +pygame.init() +res = (720, 720) + +# randomly assigns a value to variables +# ranging from lower limit to upper +c1 = random.randint(125, 255) +c2 = random.randint(0, 255) +c3 = random.randint(0, 255) + +screen = pygame.display.set_mode(res) +clock = pygame.time.Clock() +red = (255, 0, 0) +green = (0, 255, 0) +blue = (0, 0, 255) +color_list = [red, green, blue] +colox_c1 = 0 +colox_c2 = 0 +colox_c3 = 254 +colox_c4 = 254 + +# randomly assigns a colour from color_list +# to player +player_c = random.choice(color_list) + +# light shade of menu buttons +startl = (169, 169, 169) + +# dark shade of menu buttons +startd = (100, 100, 100) +white = (255, 255, 255) +start = (255, 255, 255) +width = screen.get_width() +height = screen.get_height() + +# initial X position of player +lead_x = 40 + +# initial y position of player +lead_y = height / 2 +x = 300 +y = 290 +width1 = 100 +height1 = 40 +enemy_size = 50 + +# defining a font +smallfont = pygame.font.SysFont('Corbel', 35) + +# texts to be rendered on screen +text = smallfont.render('Start', True, white) +text1 = smallfont.render('Options', True, white) +exit1 = smallfont.render('Exit', True, white) + +# game title +colox = smallfont.render('Colox', True, (c3, c2, c1)) +x1 = random.randint(width / 2, width) +y1 = random.randint(100, height / 2) +x2 = 40 +y2 = 40 +speed = 15 + +# score of the player +count = 0 +rgb = random.choice(color_list) + +# enemy position +e_p = [width, random.randint(50, height - 50)] +e1_p = [random.randint(width, width + 100), random.randint(50, height + - 100)] + + +# function for game_over +def game_over(): + + while True: + + # if the player clicks the cross + # button + for ev in pygame.event.get(): + if ev.type == pygame.QUIT: + pygame.quit() + + if ev.type == pygame.MOUSEBUTTONDOWN: + if 100 < mouse1[0] < 140 and height - 100 < mouse1[1] \ + < height - 80: + pygame.quit() + + if ev.type == pygame.MOUSEBUTTONDOWN: + if width - 180 < mouse1[0] < width - 100 and height \ + - 100 < mouse1[1] < height - 80: + + # calling function game + game(lead_x, lead_y, speed, count) + + # fills the screen with specified colour + screen.fill((65, 25, 64)) + smallfont = pygame.font.SysFont('Corbel', 60) + smallfont1 = pygame.font.SysFont('Corbel', 25) + game_over = smallfont.render('GAME OVER', True, white) + game_exit = smallfont1.render('exit', True, white) + restart = smallfont1.render('restart', True, white) + mouse1 = pygame.mouse.get_pos() + + # exit + if 100 < mouse1[0] < 140 and height - 100 < mouse1[1] < height - 80: + pygame.draw.rect(screen, startl, [100, height - 100, 40,20]) + else: + pygame.draw.rect(screen, startd, [100, height - 100, 40,20]) + + # restart + if width - 180 < mouse1[0] < width - 100 and height - 100 < mouse1[1] < height - 80: + pygame.draw.rect(screen, startl, [width - 180, height- 100, 80, 20]) + else: + pygame.draw.rect(screen, startd, [width - 180, height- 100, 80, 20]) + + screen.blit(game_exit, (100, height - 100)) + + # superimposes one object on other + screen.blit(restart, (width - 180, height - 100)) + screen.blit(game_over, (width / 2 - 150, 295)) + + # updates frames of the game + pygame.display.update() + + +pygame.draw.rect(screen, startd, [100, height - 100, 40, 20]) +pygame.draw.rect(screen, startd, [width - 180, height - 100, 40, 50]) + + + +# function for body of the game +def game( + lead_y, + lead_X, + speed, + count, + ): + + while True: + for ev in pygame.event.get(): + if ev.type == pygame.QUIT: + pygame.quit() + + + # player control + # keeps track of the key pressed + keys = pygame.key.get_pressed() + if keys[pygame.K_UP]: + + # if up key is pressed then the players + # y pos will decrement by 10 + lead_y -= 10 + if keys[pygame.K_DOWN]: + + # if down key is pressed then the y pos + # of the player is incremented by 10 + lead_y += 10 + screen.fill((65, 25, 64)) + clock.tick(speed) + + # draws a rectangle on the screen + rect = pygame.draw.rect(screen, player_c, [lead_x, lead_y, 40,40]) + pygame.draw.rect(screen, (c1, c2, c3), [0, 0, width, 40]) + pygame.draw.rect(screen, (c3, c2, c1), [0, 680, width, 40]) + pygame.draw.rect(screen, startd, [width - 100, 0, 100, 40]) + smallfont = pygame.font.SysFont('Corbel', 35) + exit2 = smallfont.render('Exit', True, white) + + # exit + # gets the X and y position of mouse + # pointer and stores them as a tuple + mouse = pygame.mouse.get_pos() + if width - 100 < mouse[0] < width and 0 < mouse[1] < 40: + pygame.draw.rect(screen, startl, [width - 100, 0, 100, 40]) + else: + pygame.draw.rect(screen, startd, [width - 100, 0, 100, 40]) + if width - 100 < mouse[0] < width and 0 < mouse[1] < 40: + if ev.type == pygame.MOUSEBUTTONDOWN: + pygame.quit() + + # enemy position + if e_p[0] > 0 and e_p[0] <= width: + + # if the enemy block's X coordinate is between 0 and + # the width of the screen the X value gets + # decremented by 10 + e_p[0] -= 10 + else: + if e_p[1] <= 40 or e_p[1] >= height - 40: + e_p[1] = height / 2 + if e1_p[1] <= 40 or e1_p[1] >= height - 40: + e1_p[1] = random.randint(40, height - 40) + e_p[1] = random.randint(enemy_size, height - enemy_size) + e_p[0] = width + + + # game over + # collision detection + if lead_x <= e_p[0] <= lead_x + 40 and lead_y >= e_p[1] >= lead_y - 40: + game_over() + + # checks if the player block has collided with the enemy block + if lead_y <= e_p[1] + enemy_size <= lead_y + 40 and lead_x <= e_p[0] <= lead_x + 40: + game_over() + + pygame.draw.rect(screen, red, [e_p[0], e_p[1], enemy_size,enemy_size]) + if e1_p[0] > 0 and e1_p[0] <= width + 100: + e1_p[0] -= 10 + else: + if e1_p[1] <= 40 or e1_p[1] >= height - 40: + e1_p[1] = height / 2 + e1_p[1] = random.randint(enemy_size, height - 40) + e1_p[0] = width + 100 + + if lead_x <= e1_p[0] <= lead_x + 40 and lead_y >= e1_p[1] >= lead_y - 40: + e1_p[0] = width + 100 + e1_p[1] = random.randint(40, height - 40) + count += 1 + speed += 1 + if lead_y <= e1_p[1] + enemy_size <= lead_y + 40 and lead_x <= e1_p[0] <= lead_x + 40: + e1_p[0] = width + 100 + e1_p[1] = random.randint(40, height - 40) + + # increases the score when blue box is hit + count += 1 + + # increases the speed as score increases + speed += 1 + + if count >= 45: + + # freezes the game FPS to 60 if + # score reaches 45 or more + speed = 60 + + if lead_y <= 38 or lead_y >= height - 38: + game_over() + if e1_p[0] <= 0: + game_over() + + pygame.draw.rect(screen, blue, [e1_p[0], e1_p[1], enemy_size, + enemy_size]) + score1 = smallfont.render('Score:', True, white) + screen.blit(score1, (width - 120, height - 40)) + screen.blit(exit2, (width - 80, 0)) + pygame.display.update() + + +# intro +def intro( + colox_c1, + colox_c2, + colox, + exit1, + text1, + text, + ): + intro = True + while intro: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + pygame.quit() + screen.fill((65, 25, 64)) + mouse = pygame.mouse.get_pos() + + # start screen + if x < mouse[0] < x + width1 and y < mouse[1] < y + height1: + + # if mouse is hovered on a button + # its colour shade becomes lighter + pygame.draw.rect(screen, startl, [x, y, width1, height1]) + else: + if x < mouse[0] < x + width1 + 40 and y + 70 < mouse[1] < y \ + + 70 + height1: + pygame.draw.rect(screen, startl, [x, y + 70, width1+40,height1]) + else: + + if x < mouse[0] < width1 + x and y + 140 < mouse[1] < y + 140 + height1: + pygame.draw.rect(screen, startl, [x, y + 140,width1,height1]) + else: + pygame.draw.rect(screen, startd, [x, y, width1,height1]) + pygame.draw.rect(screen, startd, [x, y + 70, width1 + + 40, height1]) + pygame.draw.rect(screen, startd, [x, y + 140,width1, height1]) + + # start button + if event.type == pygame.MOUSEBUTTONDOWN: + if x < mouse[0] < x + width1 and y < mouse[1] < y + height1: + #music() + game(lead_y, lead_x, speed, count) + + if event.type == pygame.MOUSEBUTTONDOWN: + if x < mouse[0] < width1 + x and y + 140 < mouse[1] < y + 140 + height1: + pygame.quit() + + # this handles the colour breezing effect + if 0 <= colox_c1 <= 254 or 0 <= colox_c2 <= 254: + colox_c1 += 1 + colox_c2 += 1 + if colox_c1 >= 254 or colox_c2 >= 254: + colox_c1 = c3 + colox_c2 = c3 + + pygame.draw.rect(screen, (c2, colox_c1, colox_c2), [0, 0, 40, + height]) + pygame.draw.rect(screen, (c2, colox_c1, colox_c2), [width - 40, + 0, 40, height]) + smallfont = pygame.font.SysFont('Corbel', 35) + sig = smallfont.render('Designed by :- Antriksh', True, white) + text = smallfont.render('Start', True, white) + text1 = smallfont.render('Options', True, white) + exit1 = smallfont.render('Exit', True, white) + colox = smallfont.render('Colox', True, (c1, colox_c1, + colox_c2)) + screen.blit(colox, (312, 50)) + screen.blit(text, (312, 295)) + screen.blit(text1, (312, 365)) + screen.blit(exit1, (312, 435)) + screen.blit(sig, (320, height - 50)) + clock.tick(60) + pygame.display.update() + + +intro( + colox_c1, + colox_c2, + colox, + exit1, + text1, + text, + )