Initial commit. Also, Card and ImageSprite likely done, at least usable (I think).

This commit is contained in:
maxneedspats 2022-07-27 22:19:04 -05:00
commit 42d07e95ed
14 changed files with 153 additions and 0 deletions

3
README.md Normal file
View file

@ -0,0 +1,3 @@
## Memory Game
This is my final project (option 1) for ITSE-1479. Instead of using the provided

0
card.py Normal file
View file

37
image_sprite.py Normal file
View file

@ -0,0 +1,37 @@
import pygame
class ImageSprite(pygame.sprite.Sprite):
def __init__(self, image_path, screen_width, screen_height):
"""
Initializes Card object.
:param image_path: Path of
:param screen_width:
:param screen_height:
"""
super().__init__()
self.image = pygame.image.load(image_path)
self.rect = self.image.get_rect()
self.rect.move(screen_width / 2, screen_height / 2)
def is_clicked(self):
"""
Tests if the sprite is clicked
:return: Returns True if clicked, False otherwise
"""
mouse_pos = pygame.mouse.get_pos()
if self.rect.collidepoint(mouse_pos) and pygame.mouse.get_pressed()[0]:
return True
else:
return False
def move(self, x, y):
"""
Moves to the given x and y coordinates
:param x: x coordinate
:param y: y coordinate
:return: None
"""
self.rect.move(x, y)

BIN
images/in_class.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

BIN
images/sobbing.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

BIN
images/tears_of_joy.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB

BIN
images/thinking.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

BIN
images/thumbs_up.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

BIN
images/tongue.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

BIN
images/turtle.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 KiB

BIN
images/unamused.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

BIN
images/wink.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

48
main.py Normal file
View file

@ -0,0 +1,48 @@
import os
import random
import pygame
from image_sprite import Card
# CONSTANTS
WIDTH = 1600
HEIGHT = 900
BACKGROUND_COLOR = (66, 135, 245)
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption('Turtle Cards')
# Creates list of images, doubles it, and shuffles it
image_files = os.listdir('images')
image_files.remove('turtle.jpg')
image_files.extend(image_files)
random.shuffle(image_files)
# Create sprites
cards = [Card(f'images/{image_files}', WIDTH, HEIGHT) for file in image_files]
# Move sprites
for i in range(16):
# Note: Coordinates start from (0, 0) at top left of screen.
# Arrange cards in a grid, 4x4, with a margin of 20 pixels between each card.
# Array from left to right, then top to bottom.
cards[i].move(i * (150 * i % 4) + 85, i * (150 * int(i / 4)) + 85)
game_is_running = True
while game_is_running:
# Draw things
screen.fill(BACKGROUND_COLOR)
for card in cards:
screen.blit(card.image, card.rect)
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_is_running = False
clicked_cards = []
for card in cards:
if card.is_clicked():
clicked_cards.append(card)
card.on_click()
card.flip_card()
pygame.display.flip()

65
test.py Normal file
View file

@ -0,0 +1,65 @@
# import the pygame module
import pygame
# import pygame.locals for easier
# access to key coordinates
from pygame.locals import *
# Define our square object and call super to
# give it all the properties and methods of pygame.sprite.Sprite
# Define the class for our square objects
class Square(pygame.sprite.Sprite):
def __init__(self):
super(Square, self).__init__()
# Define the dimension of the surface
# Here we are making squares of side 25px
self.surf = pygame.Surface((25, 25))
# Define the color of the surface using RGB color coding.
self.surf.fill((0, 200, 255))
self.rect = self.surf.get_rect()
# initialize pygame
pygame.init()
# Define the dimensions of screen object
screen = pygame.display.set_mode((800, 600))
# instantiate all square objects
square1 = Square()
square2 = Square()
square3 = Square()
square4 = Square()
# Variable to keep our game loop running
gameOn = True
# Our game loop
while gameOn:
# for loop through the event queue
for event in pygame.event.get():
# Check for KEYDOWN event
if event.type == KEYDOWN:
# If the Backspace key has been pressed set
# running to false to exit the main loop
if event.key == K_BACKSPACE:
gameOn = False
# Check for QUIT event
elif event.type == QUIT:
gameOn = False
# Define where the squares will appear on the screen
# Use blit to draw them on the screen surface
screen.blit(square1.surf, (40, 40))
screen.blit(square2.surf, (40, 530))
screen.blit(square3.surf, (730, 40))
screen.blit(square4.surf, (730, 530))
# Update the display using flip
pygame.display.flip()