Header Ads

Python3 Gaming Project Pygame : Car Racing Game & Helicopter Game

As discussed in the previous blog here we are to create multiple games interesting to get a hands on our game coding which will be very interesting believe me. When you see colorful or live output for the code you developed, games are fantastic for this, as you are specifically programming everything you see. From this you get clarity on concepts like loops functions and of course UI. Here you will not only implement your coding skills but also logic, physics and some part of AI.




We are using python 3 gaming and core python as back-end programming. So we are going to create two games.

1.       Race car game,

2.       Helicopter game.

Project overview:


Usage of basic python concepts:

·         Loops,

·         Functions,

·         Conditional statements

Here we will not be using any official frameworks we are using core python. We will be using loops specifically I have used while loops use can also use other loops and for loops for multiple level. We will be using conditional statements. We have also use if else and else if statements We will be using built in functions as well as  user defined functions.

Python Libraries:


·         Time (preinstalled)

·         Random (preinstalled)

·         Pygame (pip3 install pygame)

We have used multiple python libraries for multiple functionalities. We have used time library of python which is preinstalled. We are using this library to make use of time related functions. Then we have used Random Library which is again preinstalled, this module implements pseudo-random number generators to generate random numbers. For integers it uses uniform selection from a range. For sequences it uses uniform selection of a random element. And lastly we have used pygame library we have well discussed in our previous blog.

Stretch goals:


·         Multiple levels

·         Timed condition

·         Multiple lives

·         Multiplayer support

We will have multiple levels in our game with time conditions, it will let multiple people play the game with more than one life.

 Transcript/Cheat-sheet : 

Car Race Game : 

import time import pygame
import random
pygame.init()
#############
crash_sound = pygame.mixer.Sound("crash.wav")
#############
display_width = 800
display_height = 600
black = (0,0,0)
white = (255,255,255)
red = (200,0,0)
green = (0,200,0)
bright_red = (255,0,0)
bright_green = (0,255,0)
block_color = (53,115,255)
car_width = 73
gameDisplay = pygame.display.set_mode((display_width,display_height))
pygame.display.set_caption('A bit Racey')
clock = pygame.time.Clock()
carImg = pygame.image.load('racecar.png')
gameIcon = pygame.image.load('carIcon.png')
pygame.display.set_icon(gameIcon)
pause = False
#crash = True
def things_dodged(count):
font = pygame.font.SysFont("comicsansms", 25)
text = font.render("Dodged: "+str(count), True, black)
gameDisplay.blit(text,(0,0))
def things(thingx, thingy, thingw, thingh, color):
pygame.draw.rect(gameDisplay, color, [thingx, thingy, thingw, thingh])
def car(x,y):
gameDisplay.blit(carImg,(x,y))
def text_objects(text, font):
textSurface = font.render(text, True, black)
return textSurface, textSurface.get_rect()
def crash():
####################################
pygame.mixer.Sound.play(crash_sound)
pygame.mixer.music.stop()
####################################
largeText = pygame.font.SysFont("comicsansms",115)
TextSurf, TextRect = text_objects("You Crashed", largeText)
TextRect.center = ((display_width/2),(display_height/2))
gameDisplay.blit(TextSurf, TextRect)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
button("Play Again",150,450,100,50,green,bright_green,game_loop)
button("Quit",550,450,100,50,red,bright_red,quitgame)
pygame.display.update()
clock.tick(15)
def button(msg,x,y,w,h,ic,ac,action=None):
mouse = pygame.mouse.get_pos()
click = pygame.mouse.get_pressed()
if x+w > mouse[0] > x and y+h > mouse[1] > y:
pygame.draw.rect(gameDisplay, ac,(x,y,w,h))
if click[0] == 1 and action != None:
action()
else:
pygame.draw.rect(gameDisplay, ic,(x,y,w,h))
smallText = pygame.font.SysFont("comicsansms",20)
textSurf, textRect = text_objects(msg, smallText)
textRect.center = ( (x+(w/2)), (y+(h/2)) )
gameDisplay.blit(textSurf, textRect)
def quitgame():
pygame.quit()
quit()
def unpause():
global pause
pygame.mixer.music.unpause()
pause = False
def paused():
############
pygame.mixer.music.pause()
#############
largeText = pygame.font.SysFont("comicsansms",115)
TextSurf, TextRect = text_objects("Paused", largeText)
TextRect.center = ((display_width/2),(display_height/2))
gameDisplay.blit(TextSurf, TextRect)
while pause:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
button("Continue",150,450,100,50,green,bright_green,unpause)
button("Quit",550,450,100,50,red,bright_red,quitgame)
pygame.display.update()
clock.tick(15)
def game_intro():
intro = True
while intro:
for event in pygame.event.get():
#print(event)
if event.type == pygame.QUIT:
pygame.quit()
quit()
gameDisplay.fill(white)
largeText = pygame.font.SysFont("comicsansms",115)
TextSurf, TextRect = text_objects("A bit Racey", largeText)
TextRect.center = ((display_width/2),(display_height/2))
gameDisplay.blit(TextSurf, TextRect)
button("GO!",150,450,100,50,green,bright_green,game_loop)
button("Quit",550,450,100,50,red,bright_red,quitgame)
pygame.display.update()
clock.tick(15)
def game_loop():
global pause
############
pygame.mixer.music.load('jazz.wav')
pygame.mixer.music.play(-1)
############
x = (display_width * 0.45)
y = (display_height * 0.8)
x_change = 0
thing_startx = random.randrange(0, display_width)
thing_starty = -600
thing_speed = 4
thing_width = 100
thing_height = 100
thingCount = 1
dodged = 0
gameExit = False
while not gameExit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x_change = -5
if event.key == pygame.K_RIGHT:
x_change = 5
if event.key == pygame.K_p:
pause = True
paused()
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
x_change = 0
x += x_change
gameDisplay.fill(white)
things(thing_startx, thing_starty, thing_width, thing_height, block_color)
thing_starty += thing_speed
car(x,y)
things_dodged(dodged)
if x > display_width - car_width or x < 0:
crash()
if thing_starty > display_height:
thing_starty = 0 - thing_height
thing_startx = random.randrange(0,display_width)
dodged += 1
thing_speed += 1
thing_width += (dodged * 1.2)
if y < thing_starty+thing_height:
print('y crossover')
if x > thing_startx and x < thing_startx + thing_width or x+car_width > thing_startx and x + car_width < thing_startx+thing_width:
print('x crossover')
crash()
pygame.display.update()
clock.tick(60)
game_intro()
game_loop()
pygame.quit()
quit()

 Helicopter Game :

import time import pygame
from random import randint,randrange
black = (0,0,0)
white = (255,255,255)
sunset = (253,72,47)
greenyellow = (184,255,0)
brightblue = (47,228,253)
orange = (255,113,0)
yellow = (255,236,0)
purple = (252,67,255)
colorChoices = [greenyellow,brightblue,orange,yellow,purple]
pygame.init()
surfaceWidth = 800
surfaceHeight = 500
imageHeight = 43
imageWidth = 100
surface = pygame.display.set_mode((surfaceWidth,surfaceHeight))
pygame.display.set_caption('Helicopter')
clock = pygame.time.Clock()
img = pygame.image.load('Helicopter.png')
def score(count):
font = pygame.font.Font('freesansbold.ttf', 20)
text = font.render("Score: "+str(count), True, white)
surface.blit(text, [0,0])
def blocks(x_block, y_block, block_width, block_height, gap, colorChoice):
pygame.draw.rect(surface, colorChoice, [x_block,y_block,block_width,block_height])
pygame.draw.rect(surface, colorChoice, [x_block,y_block+block_height+gap,block_width, surfaceHeight])
def replay_or_quit():
for event in pygame.event.get([pygame.KEYDOWN, pygame.KEYUP, pygame.QUIT]):
if event.type == pygame.QUIT:
pygame.quit()
quit()
elif event.type == pygame.KEYDOWN:
continue
return event.key
return None
def makeTextObjs(text, font):
textSurface = font.render(text, True, sunset)
return textSurface, textSurface.get_rect()
def msgSurface(text):
smallText = pygame.font.Font('freesansbold.ttf', 20)
largeText = pygame.font.Font('freesansbold.ttf', 150)
titleTextSurf, titleTextRect = makeTextObjs(text, largeText)
titleTextRect.center = surfaceWidth / 2, surfaceHeight / 2
surface.blit(titleTextSurf, titleTextRect)
typTextSurf, typTextRect = makeTextObjs('Press any key to continue', smallText)
typTextRect.center = surfaceWidth / 2, ((surfaceHeight / 2) + 100)
surface.blit(typTextSurf, typTextRect)
pygame.display.update()
time.sleep(1)
while replay_or_quit() == None:
clock.tick()
main()
def gameOver():
msgSurface('crashed!')
def helicopter(x, y, image):
surface.blit(img, (x,y))
def main():
x = 150
y = 200
y_move = 0
x_block = surfaceWidth
y_block = 0
block_width = 75
block_height = randint(0,(surfaceHeight/2))
gap = imageHeight * 3
block_move = 4
current_score = 0
blockColor = colorChoices[randrange(0,len(colorChoices))]
game_over = False
while not game_over:
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
y_move = -5
if event.type == pygame.KEYUP:
if event.key == pygame.K_UP:
y_move = 5
y += y_move
surface.fill(black)
helicopter(x ,y, img)
blocks(x_block, y_block, block_width, block_height, gap, blockColor)
score(current_score)
x_block -= block_move
if y > surfaceHeight-40 or y < 0:
gameOver()
if x_block < (-1*block_width):
x_block = surfaceWidth
block_height = randint(0, (surfaceHeight / 2))
blockColor = colorChoices[randrange(0,len(colorChoices))]
current_score+=1
if x + imageWidth > x_block:
if x < x_block + block_width:
if y < block_height:
if x - imageWidth < block_width + x_block:
gameOver()
if x + imageWidth > x_block:
if y + imageHeight > block_height+gap:
if x < block_width + x_block:
gameOver()
#if x_block < (x - block_width) < x_block + block_move:
# current_score += 1
if 3 <= current_score < 5:
block_move = 5
gap = imageHeight * 2.9
if 5 <= current_score < 8:
block_move = 6
gap = imageHeight *2.8
if 8 <= current_score < 14:
block_move = 7
gap = imageHeight *2.7
pygame.display.update()
clock.tick(60)
main()
pygame.quit()
quit()
So, that's it for more detailed guide Github code .

73 comments:

  1. I am Andrew Alan a hacker who has built a very good reputation and undeniably one of the best hackers you can come across.i have got access to hack into any account and also get to generate passwords for accounts like Facebook,Instagram,Twitter,gmail,yahoo mail,whats-app,we-chat,etc..I also have logins for bank like BOA,welsfargo,chase,credit union,capital one, and many other different banks for transfers and credit card top ups,Retrieving hacked social media accounts,clearing criminal records,increase credit scores,CC hack,hacking computer systems,Website hack,Catch hacker scammers,Phishing emails, that's to mention a few.You can contact me on.
    Email ....andrewalanhacks@gmail.com
    Text.... +13238351741
    website...http://andrewalanhacksgroup.wordpress.com

    ReplyDelete
    Replies
    1. 12 year old script kitty nobody

      Delete
  2. Keep in mind though, typing to someone and then voice chatting to someone are two different experiences. Youth can be very social when typing but very shy when voice chatting.Click Here

    ReplyDelete
  3. I am really thsanks to you for sharing awesome game with us and keep updated Car Racing Game Download For Mobile

    ReplyDelete
  4. I impressed by the quality of information on this website. I am very enjoyed for this blog. Its an informative topic. Very useful info. I am sure I will visit this place again soon. Hope to see more posts soon! oceans of games

    ReplyDelete
  5. If you don’t want to read comments and just want a quick score to see if it’s worth playing a game, Stick RPG 2 is for you. It’s not a review site in itself, but instead adds results from multiple Sports Heads Basketball game review websites (similar to Rotten Tomatoes for movies).

    ReplyDelete
  6. The abysmal you dig into the content and communicate us the precise aggregation is appreciable. agen bandarq

    ReplyDelete
  7. Many game lovers will need to select between different kinds available over the internet. While some of them may prefer the card games, some people like to secure their games and other accounts and they used online strong password generator sites. Many websites have specific requirements regarding a password complexity. So, you can easily use online random password.

    ReplyDelete
  8. This is not only a hassle but also very unfair as it gives some players an advantage over others.Best Gaming PC Under 500 Dollars 2019

    ReplyDelete
  9. The simplest kind of multiplayer game to manipulate with a games cheat can be the "asynchronous peer-to-peer game."best wow leveling addon

    ReplyDelete
  10. Wow, cool post. I’d like to write like this too – taking time and real hard work to make a great article… but I put things off too much and never seem to get started. Thanks though. The cheapest Logitech G903

    ReplyDelete
  11. I’ve been surfing online more than three hours today, yet I never found any interesting article like yours. It’s pretty worth enough for me. In my opinion, if all webmasters and bloggers made good content as you did, the web will be a lot more useful than ever before. Wedding Toronto Limousine

    ReplyDelete
  12. As the name suggests, in the games belonging to this genre, the players are expected to build, expand and manage imaginary projects and communities with very little resources. Examples of this genre include, "SimCity" and "Harvest Moon".
    best gaming computer under 500 2019:Read This Guide

    ReplyDelete
  13. According to Google, they are effective tools for full apps and their use will not affect the Google Play figures. It will be interesting to see if the usage rates will be affected during future announcements.lulu apk

    ReplyDelete
  14. Thanks for taking the time to discuss this, I feel strongly about it and love learning more on this topic. If possible, as you gain expertise, would you mind updating your blog with more information? It is extremely helpful for me. https://pingtestlive.com/lineage

    ReplyDelete
  15. Two games to take a gander at as a kind of perspective for good portrayal are OverWatch and Atlas Reactor. This blog

    ReplyDelete
  16. I was reading some of your content on this website and I conceive this internet site is really informative ! Keep on putting up. visit

    ReplyDelete
  17. This blog is so nice to me. I will keep on coming here again and again. Visit my link as well.. w88coid

    ReplyDelete
  18. I needed to thank you for this incredible read!! I certainly getting a charge out of each and every piece of it I have you bookmarked to look at new stuff you post. 로투스바카라

    ReplyDelete
  19. Great post, are you looking for real estate in Sanford, FL? Learn where the deals are, get short sale lists and find homes for sale in Oviedo. slotomania free coins

    ReplyDelete
  20. At the point when a visually impaired man bears the standard pity the individuals who pursue… . Where numbness is euphoria 'tis imprudence to be astute… . 넷마블주소

    ReplyDelete
  21. At the point when a visually impaired man bears the standard pity the individuals who pursue… . Where numbness is euphoria 'tis imprudence to be astute… . 넷마블주소

    ReplyDelete
  22. I can see that you are an expert at your field! I am launching a website soon, and your information will be very useful for me.. Thanks for all your help and wishing you all the success in your business. domino online

    ReplyDelete
  23. I wish more authors of this type of content would take the time you did to research and write so well.I am very impressed with your vision and insight. Browns Game Live

    ReplyDelete
  24. Purchasing a trade-in vehicle is a major test, particularly on the off chance that you have no clue about the vehicle you are going to purchase, so it's profoundly prescribed that you take as much time as necessary to gather the required data and research through the web to arm yourself before going into the clash of purchasing utilized autos.

    ReplyDelete
  25. I really thank you for the valuable info on this great subject and look forward to more great posts. Thanks a lot for enjoying this beauty article with me. I am appreciating it very much! Looking forward to another great article. Good luck to the author! All the best! house of fun free coins 2018

    ReplyDelete
  26. Awesome blog. I enjoyed reading your articles. This is truly a great read for me. I have bookmarked it and I am looking forward to reading new articles. Keep up the good work! dallas cowboys live stream free online no sign up

    ReplyDelete
  27. Very good written article. It will be supportive to anyone who utilizes it, including me. Keep doing what you are doing – can’r wait to read more posts. patriots streaming live

    ReplyDelete
  28. Thanks for sharing this information. I really like your blog post very much. You have really shared a informative and interesting blog post with people. how to watch nfl games live online

    ReplyDelete
  29. I think that thanks for the valuabe information and insights you have so provided here. Bolt Posts

    ReplyDelete
  30. That is the reason various individuals need the privilege and proper accident protection for their vehicle. elevation used travel trailer in Missouri

    ReplyDelete
  31. Getting your customers involved and excited about your company and products provides unexpected benefits because people share links and tips with their friends on the Internet, generating viral responses. 芸能

    ReplyDelete
  32. I definitely enjoying every little bit of it. It is a great website and nice share. I want to thank you. Good job! You guys do a great blog, and have some great contents. Keep up the good work. Booster Seats

    ReplyDelete
  33. Awesome article, it was exceptionally helpful! I simply began in this and I'm becoming more acquainted with it better! Cheers, keep doing awesome! http://mygemfree.com

    ReplyDelete
  34. A good blog always comes-up with new and exciting information and while reading I have feel that this blog is really have all those quality that qualify a blog to be a one playboy888 ios download

    ReplyDelete
  35. Nice post. I was checking constantly this blog and I’m impressed! Extremely useful info specially the last part I care for such information a lot. I was seeking this certain info for a long time. Thank you and good luck. Pharmaflexrx Info - ¿Cómo comprar?

    ReplyDelete
  36. I think this is definitely an amazing project here. So much good will be coming from this project. The ideas and the work behind this will pay off so much. 먹튀신고

    ReplyDelete
  37. Very interesting blog. A lot of blogs I see these days don't really provide anything that I'm interested in, but I'm most definitely interested in this one. Just thought that I would post and let you know 라이브카지노

    ReplyDelete
  38. Nice post. I was checking constantly this blog and I am impressed! Extremely helpful information specially the last part I care for such info a lot. I was seeking this particular information for a very long time. Thank you and good luck. gaming build under 1000

    ReplyDelete
  39. I’m going to read this. I’ll be sure to come back. thanks for sharing. and also This article gives the light in which we can observe the reality. this is very nice one and gives indepth information. thanks for this nice article... xosokienthiet

    ReplyDelete
  40. Any harm to the air conditioner during its utilization is made up for from the store cash. airconditioning

    ReplyDelete
  41. When people visit the places that they have built, they are awarded this currency and every time they log into the game, they also get paid free robux hack generator

    ReplyDelete
  42. Waow this is very wonderful article, my sister love to peruse such kind of post, I am going to advise her and bookmarking this site page. Much appreciated 해외스포츠중계

    ReplyDelete
  43. Together with Visit Article content Page Syndication Provider, it is possible to move deeper together with faster rather than you might have truly dreamed with regards to your alternatives on-line.used cars for sale in nigeria

    ReplyDelete
  44. Automobiles parts are manufactured in different parts of the world. The automobile manufacturing companies choose quality parts from around the world to assemble them into great designs. used cars in dubai sale

    ReplyDelete
  45. wow, great, I was wondering how to cure acne naturally. and found your site by google, learned a lot, now i’m a bit clear. I’ve bookmark your site and also add rss. keep us updated. Latest & Bugs Free Version

    ReplyDelete
  46. I think this is one of the most significant information for me. And i’m glad reading your article. But should remark on some general things, 윈윈 먹튀

    ReplyDelete
  47. the delight that may provide light for his face as he sees this bad boy should not come to be a surprise. The MaxTronic Monster car tracker

    ReplyDelete
  48. Any business, whether small or big, faces many challenges and some of the biggest challenges are in the shape of disasters, especially the natural ones. It does not matter which part of the world your business operates in; natural disasters are possible in every part of the planet. Car Paint

    ReplyDelete
  49. RC vehicle specialists have an entire universe of movement all their own; on the off chance that you like autos you will like the action that encompasses rc vehicle racing. For certain individuals state there's not at all like it. Daytona 500 Live Stream

    ReplyDelete
  50. such a nice post i really apprciate your writting skills and thanks for providing me all information regarding car. Self-drive car rental in cochi

    ReplyDelete
  51. When you use a genuine service, you will be able to provide instructions, share materials and choose the formatting style. Car Window Tinting

    ReplyDelete
  52. Hey There. I found your blog using Google. This is a very well written article. I’ll be sure to bookmark it and come back to read more of your useful info. Thanks for the post. I’ll definitely return. published

    ReplyDelete
  53. Thanks for blogging and i enjoy the blog posting so no public comments.,,,,,,,,,,, mykonos drivers for hire

    ReplyDelete
  54. When your website or blog goes live for the first time, it is exciting. That is until you realize no one but you and your. Paper.io 2 Hack - Download Now 2019!

    ReplyDelete
  55. When your website or blog goes live for the first time, it is exciting. That is until you realize no one but you and your. http://monsterlegendzfree.com

    ReplyDelete
  56. The Players Championship 2020 will start from 12th March to 15th March. A big change has made in this year's The Players golf tournaments. The purse rises from 12 million to 12.5 million for the first time in history. As like before, TPC Sawgrass, Stadium Course will be the place for the Players tournament. No matter where you are and how you have watched before,
    Now you can watch the players live stream very smoothly and easily. Stay with us to watch the Players Championship live stream 2020. Thanks.

    ReplyDelete
  57. The edge change fluctuates from 270 to 1080 degrees with respect to the game vehicle.pubg boosting

    ReplyDelete
  58. The National Science Education Standards underline that "science instruction needs to give understudies three sorts of logical aptitudes and understandings.there

    ReplyDelete
  59. When it comes to technology solutions for your business it is easy to get carried away with the latest-and-greatest gadgets and solutions. Everyone wants to have the latest shiny thing. In larger organizations, managing technology can become burdensome due to competing and duplicative technology requests. Left unfettered, the company technology platform can resemble a "spaghetti bowl" over time. Often is the case, new technology requests are submitted without any business case to support their investment. kids tricycle

    ReplyDelete
  60. The only way to watch Supercross 2020 Live for free is your cable TV. Tuning on NBC Sports will give free access to your TV.

    Before that, you have to make sure your local cable TV provider gives NBC channel. watch Supercross 2020 Live

    ReplyDelete
  61. Hello there! Do you use Twitter? I’d like to follow you if that would be okay. I’m absolutely enjoying your blog and look forward to new posts. Game android terbaik

    ReplyDelete
  62. Super Mario Bros was the main game ever to be discharged for the NES in 1985. It was the principal game to convey compelling smooth looking over levels with an allchess news

    ReplyDelete
  63. It is a great website.. The Design looks very good.. Keep working like that!. Sol Control Custom Window tinting

    ReplyDelete
  64. I can see that you are an expert at your field! I am launching a website soon, and your information will be very useful for me.. Thanks for all your help and wishing you all the success in your business. New Port Richey Window Tinting Company Near Me

    ReplyDelete
  65. I wanted to thank you for this in your liking ensnare!! I particularly enjoying all tiny little bit of it I have you ever bookmarked to check out delivered stuff you pronounce. Sol control Custom Residential Window Tinting Service

    ReplyDelete
  66. This is just the information I am finding everywhere. Thanks for your blog, I just subscribe your blog. This is a nice blog.. dj towing

    ReplyDelete

Powered by Blogger.