Onager Ornery Clicker presents a grid of buttons. One says "Click Me!" and the rest say "Don't Click Me!" Clicking the right button scores a point, while clicking the wrong button costs a point. After each click the buttons reshuffle. There is a timer you can start and stop. You can see how fast you can score x points, or how many points you can score in x time.

I need both playtesters and code reviewers. Please comment on the look, playability and coding functionality/style. If you'd like to see features added or removed, please let me know.

Here's the Windows binary you can just double-click and run without installing:
https://www.dropbox.com/s/flxg729trhimnfq/ooc-0.9.exe?dl=0

And here is the script in case you don't have Windows but do have python 3:
https://www.dropbox.com/s/ec0k2vk1d9gzibz/clickgame3.py?dl=0

Thanks for all feedback.

A few comments on the Start/Stop buttons. If you press Start multiple times in a row, the clock runs faster and faster every time you press Start, so the counter increments more often than once a second, which I believe is what you intend. Perhaps check to see whether the timer is already running when Start is pressed, and if so, do nothing, or disable the Start button if the timer is already running?

As far as the Stop button is concerned, press Stop once and the timer stops. Press it a second time and the game resets. I believe this is what you intend, and the instructions make it clear that pressing Stop twice resets it. To make it more obvious, perhaps change the text on the button to "Reset" when the timer is already stopped. If you read the instructions, it's what you expect, but I think it would make it more fool-proof to prevent accidentally resetting the game if the player did not intend to do that.

One can play the game even when the timer is not running. Is that intentional?

As for potential additional features, well the sky is the limit, but I think you could have levels where more than one "Click Me" is possible. Early levels could have several of those buttons, later levels could have fewer or even one. In addition, to really test your reflexes, you can have a "Click Me" be on a short timer (i.e. pop up for half a second, then disappear, kind of like a duck shooting game). Your core program allows this, the modifications would be fairly minor.

High scores? An actual countdown feature (i.e. how many "Click Mes" can you get in 10 seconds). Again, the sky is the limit. I think you coded it in a way to make it so you can change it fairly easily without starting over.

As for a code review, I don't know much Python, so I can't help much in that respect other than to say that functions are named well, code is spaced/indented well and pretty easy to follow, you have quite a few small functions that do one thing and do it well, as they should. As a result, when looking at the code, I was able to zero in pretty fast at what did what, and again, this is coming from a non-Python guy, but someone who has read a lot of code. This is code that I could read quickly and without getting a headache. It may not seem like a big deal, but if you've ever had to grade an entire Computer Science class's assignment and tried to do so in a very short amount of time, well if you're turning this into a professor, he'll appreciate it.

So all in all, it does what it claims and the only real "bug" I see is the problem with hitting Start several times in a row.

Sorry if the dropbox link is busted. I've created a Bitbucket account and can link you to the repo:

https://onager@bitbucket.org/onager/onager.ornery.clicker.git

The repo shouldn't be passworded so you should be able to download anything in it.

Thank you for the review. I'm making a list of what needs changing and what features should be added/removed before the game is ready for release. There are other elements I've thought of that haven't been mentioned yet, such as being able to vary the number of buttons in the grid (potentially important for phones!) and colour-coding the various buttons.

I clicked more than 3 times at bitbucket.org and must not know my way around that site.

One of the really important things to do as a developer is to figure out your delivery system. It's got to be simple. Example:
https://www.youtube.com/watch?v=2tfh6OUUYUw

This author put up his work for free as a PDF, the story continues at link.

Well that's annoying. I don't run .EXEs from others without a clean pass like
https://www.virustotal.com/en/file/fb8f90b15bd06f3f549c0ffa296621681d7b9cd822da80616b14bef5631a78a3/analysis/1461550967/

You may want to ask your compliler source what's up.

Antivirus Result Update
Antiy-AVL Trojan/Win32.Diple 20160425
K7AntiVirus Trojan ( 004b907f1 ) 20160424
K7GW Trojan ( 004b907f1 ) 20160423
Qihoo-360 HEUR/QVM20.1.0000.Malware.Gen 20160425
TheHacker Trojan/Generik.NTTPLRZ 20160424

commented: good idea +14

I did a full system malware scan and it found nothing.

Then I did a full bootup malware scan (which occurs after a restart but before windows boots) and still found nothing.

I tried to use both Outlook and Gmail's malware scanner by mailing the executable back and forth between my Outlook and Gmail accounts, but both services block .exe files even if archived.

I downloaded the executable from the repository you downloaded it from and specifically scanned it for malware and didn't find any.

Any help here? I really don't want to be spreading malware, but can't see how I am doing so.

You could complain to virustotal.com (which appears to be another appendix of google)...

Until I figure out what's going on I'm going to stop distributing the executable.

Meanwhile, a helpful person rewrote the script, creating a bunch of classes that subclass all the widgets to their parent tk/ttk classes. I'm waiting for them to tell me how they want to be credited before sharing the script.

commented: It could be the compiler or false positives at virustotal. For now I'll try later with a fiddle. +0
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.