-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Mukul Arora
authored and
Mukul Arora
committed
Dec 30, 2015
0 parents
commit fdb677b
Showing
4 changed files
with
431 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
|
||
import random | ||
import simplegui | ||
|
||
number_of_guesses = 0 | ||
max_number = 100 | ||
|
||
|
||
# helper function to start and restart the game | ||
def new_game(): | ||
# initialize global variables used in your code here | ||
frame = simplegui.create_frame("guess_number", 200, 200) | ||
frame.add_button("Range is [0,100)", range100, 200) | ||
frame.add_button("Range is [0,1000)", range1000, 200) | ||
frame.add_input("Enter a guess", input_guess, 100) | ||
|
||
global secret_number | ||
global max_number | ||
|
||
secret_number = random.randrange(0,max_number) | ||
|
||
global number_of_guesses | ||
print "Number of remaining guesses is", number_of_guesses | ||
|
||
|
||
# define event handlers for control panel | ||
def range100(): | ||
# button that changes the range to [0,100) and starts a new game | ||
print "New game. Range is from 0 to 100" | ||
global max_number | ||
max_number = 100 | ||
global number_of_guesses | ||
number_of_guesses = 7 | ||
|
||
def range1000(): | ||
# button that changes the range to [0,1000) and starts a new game | ||
print "New game. Range is from 0 to 1000" | ||
global max_number | ||
max_number = 1000 | ||
global number_of_guesses | ||
number_of_guesses = 10 | ||
|
||
|
||
def input_guess(guess): | ||
global secret_number | ||
global number_of_guesses | ||
|
||
|
||
# main game logic goes here | ||
guess_number = int(guess) | ||
print "Guess was", guess_number | ||
|
||
number_of_guesses -= 1 | ||
print "Number of remaining guesses is", number_of_guesses | ||
|
||
if(guess_number > secret_number): | ||
print "Lower!" | ||
|
||
elif(guess_number < secret_number): | ||
print "Higher!" | ||
|
||
else: | ||
print "Correct!" | ||
new_game() | ||
return | ||
|
||
if(number_of_guesses <= 0): | ||
print "You ran out of guesses. The number was", secret_number | ||
new_game() | ||
return | ||
|
||
|
||
|
||
|
||
# create frame | ||
|
||
|
||
# register event handlers for control elements and start frame | ||
|
||
|
||
# call new_game | ||
#new_game() | ||
|
||
|
||
# always remember to check your completed program against the grading rubric | ||
|
||
#input_guess(5) | ||
|
||
# template for "Guess the number" mini-project | ||
# input will come from buttons and an input field | ||
# all output for the game will be printed in the console | ||
|
||
|
||
|
||
secret_number = 74 | ||
range100() | ||
new_game() | ||
input_guess("50") | ||
input_guess("75") | ||
input_guess("62") | ||
input_guess("68") | ||
input_guess("71") | ||
input_guess("73") | ||
input_guess("74") | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,151 @@ | ||
# Implementation of classic arcade game Pong | ||
|
||
import simplegui | ||
import random | ||
|
||
# initialize globals - pos and vel encode vertical info for paddles | ||
WIDTH = 600 | ||
HEIGHT = 400 | ||
BALL_RADIUS = 20 | ||
PAD_WIDTH = 8 | ||
PAD_HEIGHT = 80 | ||
HALF_PAD_WIDTH = PAD_WIDTH / 2 | ||
HALF_PAD_HEIGHT = PAD_HEIGHT / 2 | ||
LEFT = False | ||
RIGHT = True | ||
right_score = 0 | ||
left_score = 0 | ||
ball_pos = [1,2] | ||
paddle2_pos = HEIGHT/2 - HALF_PAD_HEIGHT | ||
paddle1_pos = HEIGHT/2 - HALF_PAD_HEIGHT | ||
paddle1_vel = 1 | ||
paddle2_vel = 1 | ||
|
||
# initialize ball_pos and ball_vel for new bal in middle of table | ||
# if direction is RIGHT, the ball's velocity is upper right, else upper left | ||
def spawn_ball(direction): | ||
global ball_pos, ball_vel # these are vectors stored as lists | ||
ball_pos[0] = WIDTH/2 | ||
ball_pos[1] = HEIGHT/2 | ||
if direction == "RIGHT": | ||
ball_vel = [random.randrange(120, 240)/60.0, -random.randrange(60, 180)/60.0] | ||
else: | ||
ball_vel = [-random.randrange(120, 240)/60.0, -random.randrange(60, 180)/60.0] | ||
|
||
# define event handlers | ||
def new_game(): | ||
global paddle1_pos, paddle2_pos, paddle1_vel, paddle2_vel # these are numbers | ||
global score1, score2 # these are ints | ||
spawn_ball("RIG") | ||
|
||
|
||
def draw(canvas): | ||
global score1, score2, paddle1_pos, paddle2_pos, ball_pos, ball_vel, paddle1_vel, paddle2_vel | ||
|
||
|
||
# draw mid line and gutters | ||
canvas.draw_line([WIDTH / 2, 0],[WIDTH / 2, HEIGHT], 1, "White") | ||
canvas.draw_line([PAD_WIDTH, 0],[PAD_WIDTH, HEIGHT], 1, "White") | ||
canvas.draw_line([WIDTH - PAD_WIDTH, 0],[WIDTH - PAD_WIDTH, HEIGHT], 1, "White") | ||
|
||
# update ball | ||
ball_pos[0] += ball_vel[0] | ||
ball_pos[1] += ball_vel[1] | ||
|
||
if ball_pos[1] <= BALL_RADIUS: | ||
ball_vel[1] = -ball_vel[1] | ||
|
||
if ball_pos[1] >= (HEIGHT-1)- BALL_RADIUS: | ||
ball_vel[1] = -ball_vel[1] | ||
|
||
# draw ball | ||
canvas.draw_circle(ball_pos, BALL_RADIUS, 2, "Red", "White") | ||
|
||
# update paddle's vertical position, keep paddle on the screen | ||
if paddle1_pos >= HEIGHT - PAD_HEIGHT: | ||
if paddle1_pos >= HEIGHT - PAD_HEIGHT: | ||
if paddle1_vel > 0: | ||
paddle1_vel = 0 | ||
|
||
elif paddle1_pos <= 0: | ||
if paddle1_vel < 0: | ||
paddle1_vel = 0 | ||
|
||
if paddle2_pos >= HEIGHT - PAD_HEIGHT: | ||
if paddle2_pos >= HEIGHT - PAD_HEIGHT: | ||
if paddle2_vel > 0: | ||
paddle2_vel = 0 | ||
|
||
elif paddle2_pos <= 0: | ||
if paddle2_vel < 0: | ||
paddle2_vel = 0 | ||
|
||
paddle1_pos += paddle1_vel | ||
paddle2_pos += paddle2_vel | ||
|
||
# draw paddles | ||
|
||
canvas.draw_line([WIDTH-PAD_WIDTH +HALF_PAD_WIDTH, paddle2_pos ] | ||
,[WIDTH-PAD_WIDTH +HALF_PAD_WIDTH, paddle2_pos+PAD_HEIGHT ] | ||
,PAD_WIDTH , "White") | ||
canvas.draw_line([0+PAD_WIDTH -HALF_PAD_WIDTH, paddle1_pos ] | ||
,[0+PAD_WIDTH -HALF_PAD_WIDTH, paddle1_pos+PAD_HEIGHT ] | ||
,PAD_WIDTH , "White") | ||
|
||
# determine whether paddle and ball collide | ||
global right_score ,left_score | ||
if ball_pos[0] <= BALL_RADIUS + PAD_WIDTH: | ||
if (ball_pos[1] >= paddle1_pos and ball_pos[1] <= paddle1_pos + PAD_HEIGHT): | ||
ball_vel[0] = -1.1 * ball_vel[0] | ||
else: | ||
spawn_ball("RIGHT") | ||
right_score += 1 | ||
|
||
|
||
if ball_pos[0] >= (WIDTH -1) - BALL_RADIUS - PAD_WIDTH: | ||
if (ball_pos[1] >= paddle2_pos and ball_pos[1] <= paddle2_pos + PAD_HEIGHT): | ||
ball_vel[0] = -1.1 * ball_vel[0] | ||
else: | ||
spawn_ball("LEFT") | ||
left_score += 1 | ||
|
||
# draw scores | ||
canvas.draw_text(str(left_score) , (100, 200), 50, 'Blue') | ||
canvas.draw_text(str(right_score), (500, 200), 50, 'Blue') | ||
|
||
def keydown(key): | ||
global paddle1_vel, paddle2_vel | ||
if key == simplegui.KEY_MAP['down']: | ||
paddle2_vel = 6 | ||
elif key == simplegui.KEY_MAP['up']: | ||
paddle2_vel = -6 | ||
|
||
if key == simplegui.KEY_MAP['s']: | ||
paddle1_vel = 6 | ||
elif key == simplegui.KEY_MAP['w']: | ||
paddle1_vel = -6 | ||
|
||
|
||
def keyup(key): | ||
global paddle1_vel, paddle2_vel | ||
|
||
def reset_button(): | ||
global right_score, left_score | ||
right_score = 0 | ||
left_score = 0 | ||
new_game() | ||
|
||
# create frame | ||
frame = simplegui.create_frame("Pong", WIDTH, HEIGHT) | ||
frame.set_draw_handler(draw) | ||
frame.set_keydown_handler(keydown) | ||
frame.set_keyup_handler(keyup) | ||
frame.add_button('Reset', reset_button) | ||
|
||
|
||
# start frame | ||
|
||
new_game() | ||
frame.start() | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
# Rock-paper-scissors-lizard-Spock template | ||
import random | ||
|
||
# The key idea of this program is to equate the strings | ||
# "rock", "paper", "scissors", "lizard", "Spock" to numbers | ||
# as follows: | ||
# | ||
# 0 - rock | ||
# 1 - Spock | ||
# 2 - paper | ||
# 3 - lizard | ||
# 4 - scissors | ||
|
||
# helper functions | ||
|
||
def name_to_number(name): | ||
# delete the following pass statement and fill in your code below | ||
if(name == "rock"): | ||
return 0 | ||
if(name == "Spock"): | ||
return 1 | ||
if(name == "paper"): | ||
return 2 | ||
if(name == "lizard"): | ||
return 3 | ||
if(name == "scissors"): | ||
return 4 | ||
|
||
|
||
# convert name to number using if/elif/else | ||
# don't forget to return the result! | ||
|
||
|
||
def number_to_name(number): | ||
# delete the following pass statement and fill in your code below | ||
|
||
if(number == 0): | ||
return "rock" | ||
if(number == 1): | ||
return "Spock" | ||
if(number == 2): | ||
return "paper" | ||
if(number == 3): | ||
return "lizard" | ||
if(number == 4): | ||
return "scissors" | ||
# convert number to a name using if/elif/else | ||
# don't forget to return the result! | ||
|
||
|
||
def rpsls(player_choice): | ||
# delete the following pass statement and fill in your code below | ||
|
||
# print a blank line to separate consecutive games | ||
print " " | ||
|
||
# print out the message for the player's choice | ||
print "Player chooses", player_choice | ||
|
||
# convert the player's choice to player_number using the function name_to_number() | ||
player_number = name_to_number(player_choice) | ||
|
||
# compute random guess for comp_number using random.randrange() | ||
comp_number = random.randrange(0,5) | ||
|
||
# convert comp_number to comp_choice using the function number_to_name() | ||
comp_choice = number_to_name(comp_number) | ||
|
||
# print out the message for computer's choice | ||
print "Computer chooses", comp_choice | ||
|
||
# compute difference of comp_number and player_number modulo five | ||
diff = (comp_number - player_number )%5 | ||
|
||
# use if/elif/else to determine winner, print winner message | ||
if(diff == 2 or diff == 1 ): | ||
print "Player wins!" | ||
elif(diff == 3 or diff == 4): | ||
print "Computer wins!" | ||
elif(diff == 0): | ||
print "Player and computer tie!" | ||
|
||
|
||
# test your code - THESE CALLS MUST BE PRESENT IN YOUR SUBMITTED CODE | ||
rpsls("rock") | ||
rpsls("Spock") | ||
rpsls("paper") | ||
rpsls("lizard") | ||
rpsls("scissors") | ||
|
||
# always remember to check your completed program against the grading rubric | ||
|
||
|
||
|
||
|
Oops, something went wrong.