Giter VIP home page Giter VIP logo

flashstudy's Introduction

FlashStudy

A flash card app used to help students study

To-Do List

  • Brainstorm session
  • Figure out the template for the flashcards
  • Build user interface
  • Outline algorithm with pseudocode

Graphics Colors (hex code, graphics.py)

  • #191970, midnight blue
  • #FF8C00, dark orange
  • #ADD8E6, light blue
  • #9ACD32, OliveDrab3

Pseudocode

import random

class Deck: def init(): run deck stuff

def createCard():
    question = ""
    answer = "" 
    create empty dictionary

    ask the user for a question
    ask the user for answer

    save and return card dictionary

def newDeck():
    ask user for new deck name
    create txt file
    save and return deck

def existingDeck():
    ask user to choose an existing deck file
    return deck.file

def modifyCard():
    lets user modify the card dictionary

def deleteCard():
    delete chosen card dictionary

def nextCard():
    go through all the cards

def scoreScreen(): 
    counter for times completed deck
    if user input == main screen:
        start game all over
        exit to main screen
    elif user input == go through same deck again:
        start chosen deck for loop again
    else:
        close game

class FlashStudyApp: def init(): deck.shuffle()

def play():
    ask user to create a new deck or choose an existing deck
    if user input == newDeck:
        newDeck()
        make cards until user is done loop:
            createCard()
    elif user input == existingDeck:
        existingDeck()
        ask user if they want to modify, delete, add card, or continue
        if modify:
            modifyCard()
        elif delete:
            deleteCard()
        elif add:
            createCard()
        elif continue:
            continue

    for every card in chosen deck loop:
        nextCard()
    
    scorescreen()

flashstudy's People

Contributors

ccurtis7 avatar ecret avatar seandye13 avatar

Watchers

 avatar

flashstudy's Issues

Peer Review: Graphics Interface

I ran your code @seandye13, and everything seems to be as it should be. The colors look good, and I can't wait for the flashcards to work. When I click on your card, it just closes the program. I don't know if it's supposed to do that or if you're still working on it. I would maybe change the name of your class since having a class named Graphics and using the graphics package could potentially create problems in the future. Other than that, great job on the graphics portion! I can't wait to see your app when it's done!

Peer Review: Text Interface

Your code seems pretty good so far @VictorPerez07032000, but there are a couple things that could be tweaked. In your code you call on a deck function that hasn't been created yet. I'm sure you're still working on the code, but this was just something I noticed. Also, I tried running your code but nothing came up. Try tweaking the code a little so we can see how it works so we can give you better feedback. Other than that, I didn't see any other problems.

Peer Review: Text Interface

This code is your start for the text interface, right @VictorPerez07032000? A few recommendations based on what is present here:

  1. You will want to coordinate with @seandye13 and @Ecret on the nomenclature for all the interacting pieces. For example, just like in our Dice Poker app, we had to be aware of the names of all classes and their respective methods and properties before coding. You should coordinate with @seandye13 to make sure that your TextInterface and GraphicsInterface have the same properties and methods, so you can using them interchangeably with your FlashApp program that runs the entire app.

self.deck = Deck()

  1. Speaking of which, make sure that you are designing your app according to the model-based approach. The app that runs that program should run the main program, not the interface class as is currently done in @seandye13's interface object, and in the play method of @VictorPerez07032000's object. From an input-output perspective, the Interface object gets inputs from the user that are fed into the app. In this way, we aren't thinking about the graphics of the app as integral to the app itself: they are only a way of getting inputs from the user, and passing outputs back to the user.

  2. The current code doesn't have a way to test run it. Consider adding something like:

if __name__ == '__main__':
    interface = Interface()
    interface.drawCard()
  1. Your current code has some dependencies that don't exist yet. I see that your __init__ function calls on a Deck class that doesn't exist yet. Be careful here-- your interface shouldn't be creating new decks from scatch; it should get a Deck as input from the main App. That way the main can control which decks are displayed, rather than hard-coding them into your program. For example:
__init__(self, deck):
    self.deck = deck

Peer review: Graphics Interface

I was looking over the code you have made currently for the graphics interface for your program @seandye13 . Your code currently runs (kudos!). Here are a few pointers I would recommend:

  1. Change the name of your file and class. As you are divvying up the package into components that work with each other, you should have a file dedicated entirely to functions and classes that deal with the graphics interface. A filename such as interface.py may be more appropriate. I am also concerned that your class name Graphics may get confusing, as you are using a graphics package called graphics.py and they do separate things. They currently don't interfere with each other, because of the difference in capitalization.

class Graphics:

  1. You mentioned that you hard-coded in the text to be displayed on the card. Eventually, you will want to read in this information from the Card class that I believe is being developed by @Ecret? The Card class should have no graphical components, but should handle all the information about the card e.g. front/back of the card. I think it would make most sense to do this in a single function, rather than separating them into card and text methods.

  2. Building on (2), consider making all your methods verbs. So I think a better method would be drawCard to indicating that you are creating a card on the screen.

  3. Your run method is eventually going to need to be more complicated. It will need to have a starting interface, a button to allow you to load current decks, create a new deck, and close.

  4. You will want to create additional classes for additional windows e.g. StartingWin for the launch screen and ReviewDeckWin for reviewing an existing deck.

UI design of game score window at the end of game/deck

It might be too much to add a right/wrong answer grading for the cards, but I think we can at least add a counter for the # of times decks have been completed to show the user how many times they have studied that deck and give a good job graphic at the end?

UI design of deck selection window

This is the window taken to after user chooses to use an existing deck from the starting window.
This window should show buttons for different decks that have already been saved by the user.

UI design of the game window

This window would start the game for user to go through each card in a randomized deck of cards.

Was thinking for this window, would draw question, then undraw that and draw answer. If that's too much for each card, maybe just a window for every question/answer?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.