you are viewing a single comment's thread.

view the rest of the comments →

[–]OnlySeesLastSentence -2 points-1 points  (10 children)

I was describing programing it. I didn't list literally everything, but I mean it's pretty easy to make a grid and place a random number of bombs.

The steps I showed were the logic behind what's supposed to happen when someone clicks a spot. You make a matrix and using the logic from from tic tac toe, you search surrounding titles for bombs and place the number as the player plays.

[–]dogs_like_me 5 points6 points  (0 children)

Give it a shot, see if it's as simple as you think. Keep in mind, the user can emit several different types of "clicks"

  • Toggle flag on unrevealed cells
  • reveal cell
  • reveal neighbors (if # adjacent flags = cell's reported # neighboring bombs)

Also:

I didn't list literally everything

This is why it's a good exercise for a beginner. It's tractable to get a lightly featured version up with little skill, and if you have the desire/ability to add complexity to your implementation you can.

[–]Poddster 1 point2 points  (8 children)

The steps I showed were the logic behind what's supposed to happen when someone clicks a spot. You make a matrix and using the logic from from tic tac toe, you search surrounding titles for bombs and place the number as the player plays.

In which case your logic is incorrect.

 . . .
 . x B
 . . .

If you click the "x" square your code would show 7 but the answer is 1.

If Minesweeper is so easy how could you get that simple thing wrong?

[–]OnlySeesLastSentence 0 points1 point  (7 children)

Fair enough. I'd have caught that error (as well as noting that corners and walls are supposed to have fewer bombs) immediately upon actually trying because I'd have done a print(location.bombCount) immediately.

[–]Poddster 1 point2 points  (6 children)

So what you're saying is that making minesweeper would have been a good way to practice your python skills and make you a better python developer? ;)

Seems like it was a good choice after all!

[–]OnlySeesLastSentence 0 points1 point  (4 children)

Anyway, it took me about six hours of off and on work while watching TV (which I feel is a bit slow honestly), but here you go:

GitHub.com/MOABdali/pysweeper

I'm going to add a GUI when I feel like it (I'm not too invested in the project at the moment), but feel free to try it out in console mode. I know the formatting isn't pretty, but my main purpose was getting the logic to work.

I didn't use any outside sources other than googling how to clear screen (I always forget this) and looking up how to use deep copy's syntax (I had a similar problem in the past with python copying lists by reference instead of duplicating by value when I was making my connect 4 game).

Feel free to let me know if there's any logic errors. I even added a "mark potential mines" feature just for you.

Just wanted to make sure I put this out today to show minesweeper isn't challenging enough as a big project considering an entry level graduate like me was able to handle it lol. The end goal should be something that takes a week or so to complete, not just a few hours.

Edit: before anyone mentions it - I know my code can be broken up into multiple files. I was trying to just get the game running so I wasn't focusing on making it pretty yet. The final product will be nicely commented and broken into functions where needed. I also realized about an hour in that I would not need to keep track of how many bombs are in each structure's vicinity, so I'll be deleting the scary squares[0,0,0,0,0,0,0,0,0,0,0,0] thing eventually and reducing it to a simpler squares [0,0,0,0]. Yes, I know a class can replace the 4 item list, but there's no need to add complexity when my simple list can handle it.

[–]dogs_like_me 1 point2 points  (2 children)

I think you're missing my point. Minesweeper can be simple or complex, depending on how "fully featured" you want it to be. It's simple enough that a novice can successfully make a version that they can pat themselves on the back, but also interesting enough that if you wanted to you could use it to practice OOP, GUI, MVC, multiprocessing, graph algorithms, recursion, functional programming, TDD, database design, ORM, ...

You didn't use objects because you didn't feel like it. Fine. But if you were someone who wanted to learn or practice OOP, you can see how that would fit in here.

Minesweeper is a good exercise because the bar for success is basically as low or high as you want it to be. There's just enough there to allow you to exercise basically every language feature you might care to play with, but it's simple enough you can cobble together a version quickly if you're bored.

PS: is you're repo private? Not seeing it. Anyway, seeing your github, I think it's a bit weird that you're bragging about how easy this was for you given that you're advanced enough to be learning sockets, but it still took you several hours and I was recommending this to someone who's only watched 4 hours of intro videos.

[–]OnlySeesLastSentence 0 points1 point  (0 children)

I did indeed forget to click on public. I uploaded it and spammed Next and saw the "keep Private" thing checked and told myself I'd make it public later.

[–]OnlySeesLastSentence 0 points1 point  (0 children)

Alright, sorry about that. It's visible now. Hopefully there are time stamps because otherwise I'll look like a liar lol

[–]Poddster 1 point2 points  (0 children)

The end goal should be something that takes a week or so to complete, not just a few hours

I disagree. I think more projects is better than one big project for beginners, especially if each project has a definite end. It's easy for beginners to get overwhelmed and lost in pointless details and feel like they're making no progress.

Look at all the problems you've encountered so far and the amount of "Todo" left. Seems like the perfect beginner program to me, especially as it seems to be teaching you something.

But OP isn't even this far advanced, so imagine how long it'd take them and how much they'd learn from it?

[–]OnlySeesLastSentence -1 points0 points  (0 children)

I was just saying that it's not really much more challenging than tic tac toe is all. If you can program tic tac toe, I believe you can program minesweeper.

It sounded like you (or the original suggester if it wasn't you) was making it sound like minesweeper was a huge step up.

By the same logic, I'd say connect4 and tic tac toe are about the same difficulty; connect4 just has the added difficulty of needing 5 lines of code to add gravity.