Python Game Programming Tutorial: SpaceWar 3

preview_player
Показать описание
NEED HELP?

❤️❤️ SHOW SOME LOVE AND SUPPORT THE CHANNEL ❤️❤️

Click Join and Become a Channel Member Today!
Channel members can get preferential comment replies, early access to new content, members only live streams, and access to my private Discord.

Amazon Affiliate Links

Other Affiliate Links

LINKS

LEARN MORE PYTHON

LEARN MORE JAVA

#Python #Tutorial #Beginner
Рекомендации по теме
Комментарии
Автор

HOLY, what happened from Tutorial 2 to Tutorial 3. That's a big jump

NikhilKapadia
Автор

I really feel good with this, I think this tutorial is perfect for me or someone who just recentelly learned a programming language already.

sebastianjulonchamana
Автор

Well it did jumped a bunch from the previous tutorials but i get it, much of what we missed was the same information.
Looks good so far i think ill rewatch this again 8^D

jeffmunoz
Автор

amazing tutorials. ive learned so much and started making my own games. still cant get images on my space invaders, thats upsetting. but on this video ive made a change. instead of having the sprite bounce off the walls. i changed the if code too


"if self.xcor < (-300: self.setx(300"


now my sprites go through the wall and out the other side. hopefully it doesnt mess things up.

redstonejunky
Автор

how do you make the turtle continuously move while holding down a key press? Currently player only moves with every press of the key. So if i want it to move again i have to first release the key and then press again for one move left or right or accelerate or decelerate. any info on that? im coding on windows 10

macaulayakin
Автор

Windows users only:
put somewhere this code:
turtle.setup(800, 800)
this will make it so it looks more normal

yesveryprofesionalnameyes
Автор

What was the major changes? I mean if we look a part from what he did between 2 and 3?

northerngamingdk
Автор

hi sir. the code is working fine but after the steps of the third part, the border isnt white even after the command and the turtle is moving fine but a default turtle (which isnt moving) is there at the centre of the screen. basically two turtles but one of them isnt moving.

Sam-iqss
Автор

Hello can you help me it says: ˋGame’ object has no attribute ‘draw_border‘

kbebxtx
Автор

hey i know i am just a 13 year old guy who has have been commenting on ur videos about all the mistakes but if it disturbs u then i am sorry but there are some problems it shows this error code
Traceback (most recent call last):
File "C:\Users\User\Desktop\Python Projects\Space war.py", line 82, in <module>
game.draw_border()
File "C:\Users\User\Desktop\Python Projects\Space war.py", line 63, in draw_border
self.pen.speed(0)
AttributeError: 'Game' object has no attribute 'pen'

and this is the code
import os
import random
#Import the Turtle module
import turtle
#required by Windows 10 to show the window
turtle.fd(0)
#Set the animations speed to the maximum
turtle.speed(0)
#Change the background color
turtle.bgcolor("black")
#Hide the default turtle
turtle.ht()
#This saves memory
turtle.setundobuffer(1)
#This speeds up drawing
turtle.tracer(1)

class Sprite(turtle.Turtle):
def __init__(self, spriteshape, color, startx, starty):
turtle.Turtle.__init__(self, shape = spriteshape)
self.speed(0)
self.penup()
self.color(color)
self.fd(0)
self.goto(startx, starty)
self.speed = 1

def move(self):
self.fd(self.speed)

class Player(Sprite):
def __init__(self, spriteshape, color, startx, starty):
Sprite.__init__(self, spriteshape, color, startx, starty)
self.speed = 4
self.lives = 3

def turn_left(self):
self.lt(45)

def turn_right(self):
self.rt(45)

def accelerate(self):
self.speed += 1

def decelerate(self):
self.speed -= 1


class Game():
def __init___(self):
self.level = 1
self.score = 0
self.state = "playing"
self.pen = turtle.Turtle()
self.lives = 3

def draw_border(self):
#Draw border
self.pen.speed(0)
self.pen.color("white")
self.pen.pensize(3)
self.pen.penup()
self.pen.goto(-300, 300)
self.pen.pendown()
for side in range(4):
self.pen.fd(600)
self.pen.rt(90)
self.pen.penup()
self.pen.ht()



#Create game object
game = Game()


#Draw the game border
game.draw_border()


#Create my sprites
player = Player("triangle", "white", 0, 0)

#Keyboard bindings
turtle.onkey(player.turn_left, "Left")
turtle.onkey(player.turn_right, "Right")
turtle.onkey(player.accelerate, "Up")
turtle.onkey(player.decelerate, "Down")
turtle.listen()



#Main game loop
while True:
player.move()









delay = raw_input("Press enter to finish. > ") so if you could be get back to me fast i would really really appreciate it

shqdoow
Автор

my code is odly not working?








import os
import random
import turtle as t

t.fd(0)
t.speed(0)
t.bgcolor('black')
t.ht()
t.setundobuffer(1)
t.tracer(1)

class Sprite(t.Turtle):
def __init__(self, spriteshape, color, startx, starty):

self.speed(0)
self.penup()
self.color(color)
self.goto(startx, starty)
self.speed = 1

def move(self):
self.fd(self.speed)
self.rt(60)

if self.xcor() > 290:
self.rt(60)


class Player(Sprite):
def __init__(self, spriteshape, color, startx, starty):
super().__init__(spriteshape, color, startx, starty)
self.speed = 4
self.lives = 3

def turn(self, angle):
+ angle)

def accelerate(self):
self.speed += 5

def decelerate(self):
self.speed -= 5

class Game:
def __init__(self):
self.level = 1
self.score = 0
self.state = "playing"
self.pen = t.Turtle()
self.lives = 3

def draw_border(self):
self.pen.speed(0)
self.pen.color("white")
self.pen.pensize(3)
self.pen.penup()
self.pen.goto(-300, 300)
self.pen.pendown()
for _ in range(4):
self.pen.fd(600)
self.pen.rt(90)
self.pen.penup()
self.pen.ht()

game = Game()

game.draw_border()

player = Player("triangle", "white", 0, 0)

t.onkey(player.turn, "Left")
t.onkey(player.turn, "Right")
t.onkey(player.accelerate, "Up")
t.onkey(player.decelerate, "Down")
t.listen()

while True:
player.move()

Emmett-Scratch
Автор

code :

#Import the turtle module
import turtle
import os
import random

wn = turtle.Screen()
wn.bgcolor("black")
wn.title("Space War By @Aaryan Sarda")
wn.setup(width=800, height=700)
turtle.setundobuffer(1)
wn.tracer(1)
turtle.ht()

player_vertices = ((0, 15), (-15, 0), (-18, 5), (-18, -5), (0, 0), (18, -5), (18, 5), (15, 0))
wn.register_shape("player", player_vertices)

class Sprite(turtle.Turtle):
def __init__(self, shape, color, startx, starty):
turtle.Turtle.__init__(self, shape=shape)
self.speed(0)
self.penup()
self.color(color)
self.fd(0)
self.goto(startx, starty)

self.speed = 1

def move(self):
self.fd(self.speed)

class Player(Sprite):
def __init__(self, spriteshape, color, startx, starty):
Sprite.__init__(self, spriteshape, color, startx, starty)
self.speed = 2
self.lives = 3

def turn_left(self):
self.lt(45)

def turn_right(self):
self.rt(45)

def accelerate(self):
self.speed += 1

def decelerate(self):
self.speed -= 1
if self.speed <= 0:
self.speed = 0

def Game():
def __init__(self):
self.level = 1
self.score = 0
self.state = "playing"
self.pen = turtle.Turtle
self.lives = 3

def draw_border(self):
#Draw border
self.pen.speed(0)
self.pen.color("white")
self.pen.size(3)
self.penup()
self.pen.goto(-300, 300)
self.pen.pendown()
for side in range(4):
self.pen.fd(600)
self.pen.rt(90)
self.pen.penup()
self.pen.hideturtle()

#Create the game border
game = Game()

#Draw the border
game.draw_border()

#Create the sprites
player = Player("player", "white", 0, 0)

#Keyboard bindings
wn.listen()
wn.onkeypress(player.turn_left, "Left")
wn.onkeypress(player.turn_right, "Right")
wn.onkeypress(player.accelerate, "Up")
wn.onkeypress(player.decelerate, "Down")
#Main game loop
while True:
player.move()
wn.mainloop()

error :
Traceback (most recent call last):
File "space_war.py", line 78, in <module>
game.draw_border()
AttributeError: 'NoneType' object has no attribute 'draw_border'
by the way i am using python 3.8.2

P-AaryanSarda
Автор

Again, but The player is like a spinner pls fix it
import os
import turtle
import random

turtle.fd(0)
turtle.speed(0)
turtle.bgcolor('black')
turtle.ht()
turtle.setundobuffer(1)
turtle.tracer (1)

class Sprite (turtle.Turtle):
def __init__(self, spriteshape, color, startx, starty) :
turtle.Turtle.__init__(self, shape = spriteshape)
self.speed (0)
self.penup()
self.color(color)
self.fd(0)
self.goto(startx, starty)
self.speed = 1
def move (self) :
self.fd (self.speed)

if self.xcor () > 290 :
self.setx (290)
self.rt (60)

if self.xcor () > -290 :
self.setx (-290)
self.lt (60)

if self.ycor () > 290 :
self.sety (290)
self.rt (60)

if self.ycor () > -290 :
self.sety (-290)
self.rt (60)


class Player (Sprite) :
def __init__(self, spriteshape, color, startx, starty) :
Sprite.__init__(self, spriteshape, color, startx, starty )
self.Speed = 4
self.lives = 3

def turn_left (self) :
self.lt(45)

def turn_right (self) :
self.rt(45)

def acelarate (self) :
self.speed += 1

def deacelarate (self) :
self.speed -= 1

class Game () :
def __init__(self) :
self.level = 1
self.score = 0
self.state = 'playing'
self.pen = turtle.Turtle()
self.lives = 3

def draw_border (self) :
self.pen.speed (0)
self.pen.color ('White')
self.pen.pensize(3)
self.pen.penup ()
self.pen.goto (-290, 290)
self.pen.pendown ()
for side in range (4) :
self.pen.fd (600)
self.pen.rt (90)
self.pen.penup ()
self.pen.ht

game = Game ()
game.draw_border ()

player = Player('triangle', 'red', 0, 0)

turtle.onkey(player.turn_left, 'Left')
turtle.onkey(player.turn_right, 'Right')
turtle.onkey(player.acelarate, 'Up')
turtle.onkey(player.deacelarate, 'Down')
turtle.listen()

while True :
player.move()

srinivasachowdary
Автор

the game is crashing, i can't run it
can u look? thanks

the problem is on this line:
self.pen.speed(0)


import os
import random
import turtle

turtle.speed(0) #speed of animation
turtle.bgcolor("black")
turtle.hideturtle() #hide turtle
turtle.setundobuffer(1) #limits the amount of memory the turtle memory uses
turtle.tracer(1) #speed up animation

class Sprite(turtle.Turtle):
def __init__(self, shape, color, startx, starty):
turtle.Turtle.__init__(self, shape = shape)
self.speed(0)
self.penup()
self.color(color)
self.goto(startx, starty)
self.speed = 1

def move(self):
self.fd(self.speed)

class Player(Sprite):
def __init__(self, shape, color, startx, starty):
Sprite.__init__(self, shape, color, startx, starty)
self.speed = 4
self.lives = 3

def turn_left(self):
self.lt(45)
def turn_right(self):
self.rt(45)
def accelerate(self):
self.speed += 1
def decelerate(self):
self.speed -= 1

class Game():
def __init__(self):
self.level = 1
self.score = 0
self.state = "playing"
self.pen = turtle.Turtle
self.lives = 3

def draw_border(self):
self.pen.speed(0)
self.pen.color("white")
self.pen.pensize(3)
self.pen.penup()
self.pen.goto(-300, 300)
self.pen.pendown()

for side in range(4):
self.pen.fd(600)
self.pen.rt(90)
self.pen.penup()
self.pen.hideturtle()


#create game object
game = Game()

#draw the border
game.draw_border()


#create sprites
player = Player("triangle", "white", 0, 0)


#KEYBOARD
turtle.onkey(player.turn_left, "Left")
turtle.onkey(player.turn_right, "Right")
turtle.onkey(player.accelerate, "Up")
turtle.onkey(player.decelerate, "Down")
turtle.listen()



#main game loop
while True:
player.move()

rodrigonedel
Автор

import os
import turtle
import random

turtle.fd(0)
turtle.speed(0)
turtle.bgcolor('black')
turtle.ht()
turtle.setundobuffer(1)
turtle.tracer (1)

class Sprite (turtle.Turtle):
def __init__(self, spriteshape, color, startx, starty) :
turtle.Turtle.__init__(self, shape = spriteshape)
self.speed (0)
self.penup()
self.color(color)
self.fd(0)
self.goto(startx, starty)
self.speed = 1
def move (self) :
self.fd (self.speed)

if self.xcor > 290 :
self.setx (290)
self.rt (60)

if self.xcor > -290 :
self.setx (-290)
self.lt (60)

if self.ycor > 290 :
self.sety (290)
self.rt (60)

if self.ycor > -290 :
self.sety (-290)
self.rt (60)


class Player (Sprite) :
def __init__(self, spriteshape, color, startx, starty) :
Sprite.__init__(self, spriteshape, color, startx, starty )
self.Speed = 4
self.lives = 3

def turn_left (self) :
self.lt(45)

def turn_right (self) :
self.rt(45)

def acelarate (self) :
self.speed += 1

def deacelarate (self) :
self.speed -= 1

class Game () :
def __init__(self) :
self.level = 1
self.score = 0
self.state = 'playing'
self.pen = turtle.Turtle()
self.lives = 3

def draw_border (self) :
self.pen.speed (0)
self.pen.color ('White')
self.pen.pensize(3)
self.pen.penup ()
self.pen.goto (-300, 300)
self.pen.pendown ()
for side in range (4) :
self.pen.fd (600)
self.pen.rt (90)
self.pen.penup ()
self.pen.ht

game = Game ()
game.draw_border ()

player = Player('triangle', 'red', 0, 0)

turtle.onkey(player.turn_left, 'Left')
turtle.onkey(player.turn_right, 'Right')
turtle.onkey(player.acelarate, 'Up')
turtle.onkey(player.deacelarate, 'Down')
turtle.listen()

while True :
player.move()

It is working the corection you told but its showing another error

if self.xcor > 290 :

TypeError: '>' not supported between instances of 'method' and 'int'

Please help Again

srinivasachowdary
Автор

my code is oddly not working?
import os
import random

import turtle

# Initial turtle setup
turtle.fd(0)
turtle.speed(0)
turtle.bgcolor("black")
turtle.ht()
turtle.setundobuffer(1)
turtle.tracer(1)


class Sprite(turtle.Turtle):
def __init__(self, sprite_shape, color, start_x, start_y):
turtle.Turtle.__init__(self, shape=sprite_shape)
self.speed(0)
self.penup()
self.color(color)
self.fd(0)
self.goto(start_x, start_y)
self.speed = 1

def move(self):
self.fd(self.speed)


class Player(Sprite):
def __init__(self, sprite_shape, color, start_x, start_y):
Sprite.__init__(self, sprite_shape, color, start_x, start_y)
self.speed = 4
self.lives = 3

def turn_left(self):
self.lt(45)

def turn_right(self):
self.rt(45)

def accelerate(self):
self.speed += 1

def decelerate(self):
self.speed -= 1


class Game:
def __init__(self):
self.level = 1
self.score = 0
self.state = "playing"
self.pen = turtle.Turtle
self.lives = 3

def draw_border(self):
#draw border
self.pen.speed(0)
self.pen.color("white")
self.pen.pensize(3)
self.pen.penup()
self.pen.goto(-300, 300)
self.pen.pendown()
for side in range(4):
self.pen.fd(300)
self.pen.rt(90)
self.pen.penup()
self.pen.ht()



game = Game()

game.draw_border()

player = Player("triangle", "white", 0, 0)

turtle.onk0ey(player.turn_left, "Left")
turtle.onkey(player.turn_right, "Right")
turtle.onkey(player.accelerate, "Up")
turtle.onkey(player.decelerate, "Down")
turtle.listen()


while True:
player.move()

it says AttributeError: 'int' object has no attribute '_speed'

gamingplayinglearing
Автор

Code :
import os
import turtle
import random

turtle.fd(0)
turtle.speed(0)
turtle.bgcolor('black')
turtle.ht()
turtle.setundobuffer(1)
turtle.tracer (1)

class Sprite (turtle.Turtle):
def __init__(self, spriteshape, color, startx, starty) :
turtle.Turtle.__init__(self, shape = spriteshape)
self.speed (0)
self.penup()
self.color(color)
self.fd(0)
self.goto(startx, starty)
self.speed = 1
def move (self) :
self.fd (self.speed)

if self.xcor > 290 :
self.setx (290)
self.rt (60)

if self.xcor > -290 :
self.setx (-290)
self.lt (60)

if self.ycor > 290 :
self.sety (290)
self.rt (60)

if self.ycor > -290 :
self.sety (-290)
self.rt (60)


class Player (Sprite) :
def __init__(self, spriteshape, color, startx, starty) :
Sprite.__init__(self, spriteshape, color, startx, starty )
self.Speed = 4
self.lives = 3

def turn_left (self) :
self.lt(45)

def turn_right (self) :
self.rt(45)

def acelarate (self) :
self.speed += 1

def deacelarate (self) :
self.speed -= 1

class Game () :
def __init__(self) :
self.level = 1
self.score = 0
self.state = 'playing'
self.pen = turtle.Turtle()
self.lives = 3

def draw_border (self) :
self.pen.speed (0)
self.pen.color ('White')
self.pen.size (3)
self.pen.penup ()
self.pen.goto (-300, 300)
self.pen.pendown ()
for side in range (4) :
self.pen.fd (600)
self.pen.rt (90)
self.pen.penup ()
self.pen.ht

game = Game()
game.draw_border()

player = Player('triangle', 'red', 0, 0)

turtle.onkey(player.turn_left, 'Left')
turtle.onkey(player.turn_right, 'Right')
turtle.onkey(player.acelarate, 'Up')
turtle.onkey(player.deacelarate, 'Down')
turtle.listen()

while True :
player.move()

It says AttributeError: 'Turtle' object has no attribute 'size'

srinivasachowdary
join shbcf.ru