Well...no. And yes. You'd have the overall game structure first - so, in case of MTG (not a big player, so don't go after me for inaccuracies - take is as an example) you have the following stages:
1. Pre-turn stuff (untap cards, etc)
2. Draw a card
3. Play land
4. Play other cards
5. Attack phase (you'd have that broken into few steps but I'm simplyfing, however, let's call them the following so we have some structure)
5.1 Attack set up
5.2 Attack resolution
6. End turn
So something like that. Each stage has different stuff going on and you'll be able to apply meta rules on them with the separation.
Now, after that, comes the beauty of Object Oriented programming. I don't know if you covered it in the course but I suppose you did, even if they didn't call it that. Basically, you can separate the program into logical constructs of some sort or "objects"[footnote]gees, that's a REALLY big oversimplification. I suppose software developers would cringe after reading it. Sorry - it's just faster to explain it that way, be merciful[/footnote] - cards would be one such construct. And here comes one property of OO - inheritance, you can have objects behave hierarchically, so you would have an overall "card" class you'd use which would dictate how one plays cards in a very general manner (it resides in the deck, you can draw it, place it down, tap it, etc). Then you can have more specific implementations of those - for example, lands - they are still a card and inherit all of the functionality from there - you can draw them, play them, etc, however, they are now more specific and have a specific implementation - you can play them on stage 3 and tapping them gives you mana. You would also have other more specific groups - creatures, sorceries, enchantments, etc, with their own rules associated with them. Finally, you go down to individual cards [mtg_card=Plains]Plains[/mtg_card] would give 1 white mana when tapped for example, [mtg_card=Firebolt]Firebolt[/mtg_card] does 2 damage (while costing 1 red), and so on and so forth.
That's...a very basic overview of it, at least. But it's how I'd start if I were you. Try to implement some simple rules first so see how it goes, try it with ordinary games and some game that involves them - Hearts is easily accessible and not too hard to recreate, I think. Or there is an even easier game, that might give you a better start - it's called War and Peace (and other stuff, sometimes War, etc). Here are the rules:
Setup
- You have two players and a full deck of cards
- Each card has a score - for number cards, it's the number, then you have Ace - 1, Jack - 11, Queen - 12, King - 13.
- Shuffle the deck and divide it evenly between the two
- The players keep their stack face down
Play
- Peace round: Both players draw a card from the top of the stack and put it face up. Whichever has a "better" card wins the round and takes both then puts them at the bottom of their stack.
- War round: In the case of equal cards (e.g., two Jacks) you get a "war" - each player draws additional 3 cards (again, from the top) and places them face up, then the players sum the score and thus determine the winner. (and in the rare case they are equally matched again - repeat. Or maybe they get their own cards back and reshuffle - I've seen both)
- Repeat.
And...that's it. Should be really easy to do. The goal is for one player to have all cards but it's really long and boring to get to that point (it gets boring in about a minute of play anyway) but it's nice and simple way to try and see how to make a structured play. You can throw extra stuff in there, like card suits and stuff. I've seen many variations of the gameplay but that's the most common part. Examples include if you have a war round that ends on equal summed score, the player that has the highest card wins (so, three 10s would lose against a King, 8 and 9) and/or the player having the highest suit winning (they go Spades > Hearts > Diamonds > Clubs) - so a King of spades, 8, and 9 would win over a King of clubs, Queen, and 5. And some variations there.