# Drill Sergeant GUI: A PLL drilling program



## blgentry (Feb 6, 2009)

I've mentioned a few times that I wrote a program to drill PLLs by presenting random scrambles to you that you run, then look down at the cube, try to recognize the PLL, and execute the PLL to solve the cube. I've included embedded U face turns, as well as y cube rotations, so the PLLs will be presented more like you'd see them in a cube solve. Someone asked about it, so I decided to go ahead and post it here.

This is alpha software, is not feature complete, and doesn't even have an installer.

Here are a couple of screen shots:









This program is NOT designed to time you on PLLs. It's purpose is to improve your PLL recognition and execution by presenting random PLLs ON THE CUBE via the scrambles it gives you.

The options menu will allow you to select which PLLs to drill on; the default is all of them, but you can select any combination you'd like; for example if you are having trouble with 4 or 5 of the PLLs, you might drill on just those for a while.

Finally, since this is written in Python, it should run on Windows, Linux, and Mac. I've tested it on Windows XP and Linux successfully.

You can download the latest package, with a windows EXE here.

http://www.megaupload.com/?d=JZ53PRB8 

The source code is attached for anyone that wants to run in on Linux or Macintosh.

I hope someone else finds this useful.

Brian.


----------



## Asheboy (Feb 6, 2009)

I managed to get into into an EXE. I'm not sure if it works with out the packages yet so if someone could try it out.

http://asheboy.kyberhost.com/cube/Drill%20Srgt.zip

Just extract and open the "drill_srgt_gui.exe" and it should run alright.


----------



## Samlambert (Feb 7, 2009)

Tried it, it works. Nice program you got there.


----------



## blgentry (Feb 7, 2009)

@Asheboy: Thanks for the effort. The options menu doesn't work, but that's not a deal killer. BTW, I'm trying this on a machine that already has all the required packages installed, so I'm not sure if it works on machines without them.

@sam: Thanks. I hope you find it useful. Are you using Ashe's EXE build, or did you install the packages like the README said to?

Brian.


----------



## Samlambert (Feb 7, 2009)

blgentry said:


> @Asheboy: Thanks for the effort. The options menu doesn't work, but that's not a deal killer. BTW, I'm trying this on a machine that already has all the required packages installed, so I'm not sure if it works on machines without them.
> 
> @sam: Thanks. I hope you find it useful. Are you using Ashe's EXE build, or did you install the packages like the README said to?
> 
> Brian.



I'm using Ashe's EXE build, works fine without packages.


----------



## Asheboy (Feb 7, 2009)

Samlambert said:


> blgentry said:
> 
> 
> > @Asheboy: Thanks for the effort. The options menu doesn't work, but that's not a deal killer. BTW, I'm trying this on a machine that already has all the required packages installed, so I'm not sure if it works on machines without them.
> ...



I think you mean "Ash's" 

I'm glad it works.


----------



## blgentry (Feb 7, 2009)

Inspired by Ash's success, I've successfully packaged up a windows distribution of Drill Sergeant GUI. The options screen is included in this version, unlike Ash's. Download it here:

http://www.megaupload.com/?d=JZ53PRB8

For most windows users, this should work without a problem. However, some with very "clean" windows installations might get an error that a DLL called MSVCP71.DLL is missing. If you get that error, simply download it from the internet (google will find it for you) and put it in your windows/system directory. It should then work.

Let me know if you run into any problems with this, and/or if you like it.

Brian.


----------



## blgentry (Feb 12, 2009)

I don't want to needlessly bump my own thread but...

Has anyone besides the first two posters gotten the software to work? Either the original version I posted, or the windows build from my last posting? 

Apparently no one has any comments, but I'm curious as to whether anyone has actually gotten it to work or not.

Thanks,

Brian.


----------



## Zarxrax (Feb 20, 2010)

Worked great after downloading msvcp71.dll.
The options window doesn't fully fit on the screen of my netbook though (the last checkbox is offscreen).

An OLL version of this woud be awesome.


----------



## Zarxrax (Apr 14, 2010)

I built a CLL version of this App, but I can't get the options screen to work after I run it through py2exe. How do you get that up and running?


----------



## blgentry (Apr 14, 2010)

^ CLL? Do you mean OLL? Did you modify the code to reverse the scrambles for all 57 OLLs? Maybe I'm misunderstanding.

I'll be honest; it's been over a year since I last touched this and I only produced the windows executable so that people could more easily install and use the program. No one seemed interested; I'm not even sure anyone besides you and Asheboy ever even used it. I can't remember exactly what command line options I had to use to get py2exe to include the options screen. I'd have to go back and try again.

If you can tell me what you're trying to do, specifically, I can try to help. My instinct tells me that you should probably install the development tools (all free) if you want to modify the code and functionality. That would include Python, WXPython, and PythonCard. From there you wouldn't need to use py2exe at all, since it will run natively in the Python interpreter with PythonCard as the GUI interface.

You could even shrink the options window then by use PythonCard's GUI builder. Or like I said, if you'll tell me exactly what you're trying to do, I can try to help you from my end.

Finally, if you are usually online when you are doing PLL/OLL training, you might be interested in Brunson's web drill sergeant: http://brunson.com/drillsergeant/

I hope this helps.

Brian.


----------



## Zarxrax (Apr 14, 2010)

Nope, I modified it for CLL. I modified the code and the gui to reflect this, and it runs fine when I execute the python scripts. I'll probably make an OLL version too after I finish learning CLL, because this is honestly one of the most useful tools I have come across. 
anyway, I normally use my netbook when I am practicing cubing, and I dont have a python development environment set up on there (and I don't really want to), so that's why I am interested in compiling it to an exe.

But in any case, I also made it save/load the options to a file, so even if I can't get the options screen to work, I can manually choose which CLLs I want to practice by editing that file...


----------



## Zarxrax (Apr 14, 2010)

Actually, I seem to have just found the problem. I only just now noticed that it was writing the error to a log file.
In the gui builder, I had used a staticline component to help organize the clls, and for some reason, that stops it from working after compiling it to exe. Removing the line made it work.

Here it is for whoever wants to try it: http://amvhell.com/stuff/cubes/drill_srgt_cll.rar
No guarantees that the scrambles all work. I just copypastad them in without testing.

Update: 04/15/2010 - Replaced some algs that didnt work


----------



## blgentry (Apr 14, 2010)

Ah ha CLL. I don't do the 2x2x2 cube so I didn't know the term. I think it's great that you modified it to suit your own needs and now you've got it working properly too. Cool. 

Your options screen saving the settings is something I was playing with, but never implemented. Yours works almost all the way. The only thing it doesn't do is populate the check boxes in the options screen with the currently selected CLLs. I *think* this was a problem I had as well and figuring it out was irritating me, so I just scrapped the idea.

At one time I was working on a combined OLL/PLL version of this that would simulate all combinations of OLL and PLL, plus a U rotation in between. Brunson and I collaborated on the ideas and he ended up developing his own full last layer trainer and turned it into a web application I linked too above. 

I have the OLL routines from his code that I'm fairly certain he wouldn't mind me sharing. To turn them into true OLL *setup* routines, they'd have to be reversed of course. But my cube_fuctions.py file has an algorithm reverser function so that should be extremely easy to automate.

If you want the OLL routines I can PM them to you or something.

Let me know if I can help you with this further.

Brian.


----------



## Zarxrax (Apr 14, 2010)

Yea, I saw that function in the code, but I couldn't figure out how to get it working with the scrambles, so in the end I just ended up copying algs into a web app that spits out the inverse algs, then I copied those back into the program.


----------



## blgentry (Apr 14, 2010)

I'm tempted to take this offline since it's probably not interesting to others, but on the off chance...

rev_cube_string() is an unusual function in that it takes a string as an argument *but* it returns a list as it's result. Why? Because you pretty much always find algs printed as "strings", I.E. "R U R' U' " . But handling them as lists makes more sense in many contexts, so I convert to list before doing the reversal. You can convert the list back to a string pretty easily.

Here's an example of how you'd operate on a dictionary of strings containing OLLs that you want to reverse.


```
#  Define OLLS = {} and populate with your OLL strings
from cube_functions import rev_cube_string
ROLLS = {}
for k in OLLS.keys():
	roll = rev_cube_string(OLLS[k])
	ROLLS[k] = " ".join(roll)
```
Now ROLLS will contain all of the reversed OLL strings, or the "setup algorithms" for each OLL. Like I said I have a dictionary of those if you want it.

For the programmers out there, yes I'm using an unnecessary variable in the code above: I did it on purpose for clarity.

Brian.


----------

