2015-02-15 04:52:54

Hello Everyone.
I have been wanting to learn programming to make audiogames for a long time. I've tried to learn on my own reading manuals and guides and I just can't get the hang of it. I'm a fast learner and eager to learn. Basically what I need is someone to talk me through how to program give me assignments lol. The language I would like to learn is either purebasic or python because I've heard good things about both. If I had to make a choice I would probably choose python because I know you use indentation instead of all those nasty symbols.
If anybody has the time or patience to teach me I'd really appreciate it. I'm leaving town for a few days and won't have my laptop but whoever is willing to help me you can contact me on this forum for now.

Guitarman.
What has been created in the laws of nature holds true in the laws of magic as well. Where there is light, there is darkness,  and where there is life, there is also death.
Aerodyne: first of the wizard order

2015-02-15 07:27:03

Well, have you considered an actual class?  If you're near a college, you can almost certainly find something introductory, and the knowledge will transfer.
The typical starting assignments for any language tend to go something like this:
- Print "hello world" in a console.
- print the numbers 1 to 10 in the console.
- Print the numbers 1 to 10 in the console, but only if the number is even (hint: number/2 == 0 is the needed condition)
- Build a guessing game that repeatedly asks for a number until you enter the right one.
- Modify the guessing game to tell you if the number you entered is too low or too high.
- Stop and carefully consider how you can beat the proceeding guessing game for the numbers between 1 and 1000 in somewhere around 5 turns.
The last one is particularly important, as the most efficient strategy for beating such a guessing game is pretty trivial once you know it and happens to also be at the bottom of a bunch of important concepts.
This is the pretty typical path.  After that, it'll start varying depending on where/who you're learning from, but the getting starteds all seem to be along those lines.  If you're in a computer science curriculum, they'll start heading for data structures after that--things like linked lists and trees.  But they won't get there for a while because they're going to teach the basics of classes first, and those aren't really enough for you to make the jump on your own.
You want a book.  I've never met a new programmer who can learn from manuals, ever.  I can't recommend one from personal experience.  I can learn from manuals and consequently haven't seriously considered using a book to learn a programming language in years; you will get there if you stick with it, and then you will have the same problem recommending tutorials to new programmers.  I have heard good things from multiple people about Learn Python the Hard Way.  It seems to be using an exercise approach, which seems to also be what you're asking for.
Purebasic or BGT will get you from nothing to playing a sound faster than Python.  I believe that Python has more to offer in the long run.  Frastlin has a project that tries to give some of the BGt convenience to Python.  I have no idea on the status of it, so maybe he can comment.  Whenever Libaudioverse is actually ready, the first language it's going to support is Python; the test project I'm currently working on, basically Shades of Doom but possibly with multiplayer and definitely things like terrain types is also Python.  Python has Pyglet which is nice in a lot of ways which will become clear as you continue to learn programming.
Hope this helps at least a bit.

My Blog
Twitter: @ajhicks1992

2015-02-15 07:58:10

Hello Camlorn.
Well as far as taking a class I would love to but I won't for 2 reasons the first is that I've looked for classes that teach python but all I could find were classes that teach c++ or ruby but I can't find a class at my college that deals spacifically with python and I don't know if the skills I would learn in a class like that are transferable. The second reason is that I couldn't afford it right now as much as I'd like too. I've read the python tutorial which sort of just tells you a little bit about python then just rambles on about a lot of nothing for a long time.
I did read a book learning python which made sense to me but the code examples didn't make any sense to me some had indentation some used parentheses which really confused me. I think I hunted for this book you recommended a while back but neither bookshare or bard had it which is really disappointing since it sounds exactly like what I'm looking for. I'll look again maybe they have it now.
The problem I really have with programming is that I understand the concepts like printing text, what an if statement does, and an idea of how loops work but when I try to write working pieces of code I can't seem to get a working program. The best I can do is print messages to the screen but when I try doing more advanced stuff like printing random messages or playing a sound I always get errors. Then I get so frustrated after a while I just stop working at it lol. I know that's no way to learn but can you imagine spending a lot of time trying to do things you can understand but can't put into action?
I've heard so many good things about python how easy it is, how flexible and that makes me want to work with it especially because it's free unlike purebasic. I'll keep trying with python even though the failure is so frustrating lol.

Guitarman.
What has been created in the laws of nature holds true in the laws of magic as well. Where there is light, there is darkness,  and where there is life, there is also death.
Aerodyne: first of the wizard order

2015-02-15 16:45:40

When I was starting out, I did a lot of copy-editing from small examples, and stuck to the syntax as closely as possible. (To this day, I am in the habit of spacing my switch statements because of those early Javascript examples...)

It was after about 3 months of playing with examples before I made this (I'm not sure of the exact date; I did fix some bugs shortly after putting it online).
To make something similar in Python, all you'd need are:
print
if
elif
else
while
variables
math basics
random numbers
comparing strings (the dinky game I made only checks for equivalence)

There is a bit of terrible coding in there that would have been much improved had I had a grasp of functions at the time.

I drew upon maybe 3 examples for that program. They look kinda like this when translated to Python:


import random

act="-"
password="potato"

# This is the weirdest looking part. You can literally just copy/paste it and change the numbers/indentation if memorizing the syntax is too much at first:
num=random.randint(1, 5)

if num==1 : password="ball"
elif num==4 : password="death"

while act!=password :
    act=raw_input("Enter password:")
    if act=="hint" :
        print "The password is either potato, ball, or death."
    elif act!=password :
        print "Invalid password!"
    else :
        print "Correct!"
    
print "Welcome!"
print "\n\n" # \n is a line break.
print "Goodbye."

I typed this into this post, then remembered I should check it for errors, so I pasted it into a file called password.py. password.py appears to work as expected.

It might not seem like much, but I was never one to ignore an opportunity to make games just because it wasn't as advanced as what the Playstation Developers were using. It was a few months after that text-based fighter before I started playing with a game with keyboard controls, timers, and sound. About a year later, I could probably have handled the bulk of what went into Sengoku Jidai. 2 years in, I would have thought of Sengoku Jidai as poorly coded (because it is tongue).

I mention the timeframes because I feel like there are two things going wrong, expectation-wise: people with experience tend to expect games to take longer to develop than they strictly have to (better pessimism than optimism, though), while newbies tend to expect to dive write in and start making Skyrim after a month or so. I want to make the next Mainstream quality game as badly as the next person, but I want to make something more than I want to make something perfect. (And that's where baby DLEs come from.)

看過來!
"If you want utopia but reality gives you Lovecraft, you don't give up, you carve your utopia out of the corpses of dead gods."
MaxAngor wrote:
    George... Don't do that.

2015-02-15 17:58:33

Did you hit the link?  I'm linking you to the free online HTML version that is, you know, free.  The last thing you want is an audiobook or anything that might be of poor quality (i.e. some Bookshare stuff).
I don't know what you mean by parentheses.  Parentheses are used mainly in 3 places in Python.  The first is to designate parameters to a function, as in every other programming language.  The second is the construction of a tuple, which is like a list but can't be modified (there are good reasons for that, don't worry about it for now).  The third is for something called a generator expression.  This last is advanced, possibly even the last thing you'll learn about Python.  It's the kind of thing you'll never use until the very rare day where it can turn 20 or 30 lines into 4 or 5.  If you're reading examples online instead of going through the tutorials, you may be encountering it.  Especially if it's mathematical code.

My Blog
Twitter: @ajhicks1992

2015-02-15 21:33:55

Woops Camlorn sorry about that lol. After you mentioned it I just assumed it was a paid version. I know stupid right?
Thanks for pointing that out after I saw your link I went to amazon to find the book and it was almost $30 and I checked bookshare and bard again and there was nothing.
Thank you for this I will start reading and working on this today. I'm very glad python has idle since I can test code in real-time. Btw, I have a newbie question what is the difference between idle and the python command line?
I probably should have known better than to get a programming book from bookshare but I was desperate at the time. You know if you have bookshare you should get the book learning python and you could see what I mean. One of the first code examples I saw in that book looked like this, print(`hello world`) but then I also saw the same example like this, print    `hello world` the second version I tried at the time worked fine the bookshare version did not. A long time ago I also found a python book meant for kids that would show you how to create games but I ran into the same problem parentheses instead of indentation but this might have been because I translated it from pdf into text.
If I ever get the hang of programming I'm going to write or record extremely easy and detailed tutorials so that other newbies won't run into the same problems I'm having.
@Cae, thank you for the advice and the code example. I've done the whole copy and paste thing before but when I do that I feel like I'm not doing any actual work. I will probably start copying things to see how they work and then trying to add to them.

Guitarman.
What has been created in the laws of nature holds true in the laws of magic as well. Where there is light, there is darkness,  and where there is life, there is also death.
Aerodyne: first of the wizard order

2015-02-15 23:22:49 (edited by camlorn 2015-02-15 23:26:52)

I do not believe Idle is accessible.  Just use the Python command line-it's what everyone else is doing, even many sighted devs.  They appear to be the same thing, just Idle is graphically nicer.

My Blog
Twitter: @ajhicks1992

2015-02-15 23:51:23

Well I've started reading the python book and it's very easy to understand so far. I do have a question though I saw the first code examples which just print text to the screen. I haven't written them out yet but I noticed that after typing print there is no indentation before writing hello world. Is this okay because I've seen an example where it is indented after you write print.

Guitarman.
What has been created in the laws of nature holds true in the laws of magic as well. Where there is light, there is darkness,  and where there is life, there is also death.
Aerodyne: first of the wizard order

2015-02-16 01:59:59

Take the online version of that book as god and forget everything you know.  This will probably save you a great deal of frustration, at least for now.   I don't know what you're looking at but it sure sounds wrong to me.
The rule for indentation in Python is actually really simple.  You indent more after any line ending in the : character; this is if, for, while, class, def, elif, else, and a few more.  You unindent by the same amount you indented to "end" the block.  The book you are reading will get to this if it hasn't, but the long and short of it is that if you've got no line ending in a : in the program, you should also have no indentation.  it is possible that you were a victim of word wrap or a low-quality conversion process; as a rule, prefer online html versions when possible.

My Blog
Twitter: @ajhicks1992

2015-02-16 05:18:28

Hey Camlorn.
Yeah your right I'll just start from scratch. I do have one more question it says in the book to use python 2 which is what I have on my computer sometimes it says python 2.7 but I've seen a couple of times where says python 2.6. I have python 2.7.9 which I assume is the proper one to use. So am I right or wrong?
Anyway camlorn I just wanted to say thank you for helping me and answering all my newbie questions.

Guitarman.
What has been created in the laws of nature holds true in the laws of magic as well. Where there is light, there is darkness,  and where there is life, there is also death.
Aerodyne: first of the wizard order

2015-02-16 09:43:19

Hi there,

It's not my intention to start a proselitist party here... just some ideas that could be interesting for you:
Why python? If you are interested in developing games, It's not exactly the most popular language. Obviously, it's not a popularity matter, but you will find examples and more examples in other languages.
The same if you want to develop a windows form application. It's important cause first steps of any learning way are not specially fun, and (in my opinion), starting with a higher level language (any .net, maybe), make things easier and more entertaining, as you can creatte windows forms applications the easy way, experiment with sounds and capture keyboard events just out of the box, etc.

I know, some folks think that the easiest way to learn is the good old command line style, but in my opinion it's not necessary: there are free ides to develop in c# or visual basic.net, fully accessible, and, for someone who worked all of his life with grafical user interfaces, much easier to understand: select a button control, add it to your project, press enter, add your code like:
messageBox.Show("Hello world");, and you have a full application runing in 20 seconds, with window, a button, and and action that happens when you press this button.

There are a lot of sites explaining each little keyword of the language, and more examples than you will ever need, ready to copy, paste and compyle.
And modern integrated development environments are, nowadays, essential to creatte modern applications (and they incorporate tools and more tools to help you).

Ok, it's not essential, you always can start a fire by rubbing two sticks, but...

2015-02-16 16:05:17

@Guitarman
2.7.9 is fine.  There are no major incompatibility issues unless you go to 3.  Almost no one is on 3 for something real, though we might be headed that way in a year or two.
@Alan
The comments about IDEs are true if you are sighted.  Modern versions of Visual Studio are not accessible to the point of being convenient, though you can use them if you are on Jaws or possibly Window-eyes.  You still have issues, though.  If you aren't, all the debugger windows do not work at all.  Idle is not accessible, at least with NVDA.  Pycharm and anything else by IntelliJ?  Not accessible.  The tools that a blind person could benefit from include autocomplete and debugging.  Everything else---all the parts sighted people like to do with color and all that?  They don't pertain.  There is a possible argument for automatic formatting, but you can get that in your text editor anyway or just run your stuff through a command line program.
I know and  have known quite a few programmers working in the professional workplace who all use the command line, and many of them are younger than me (18-19 age range).  I have it on good authority that Amazon uses command line development for Android app development, though this is word of mouth and consequently I don't have something to site here.  As soon as you start something that is client and server, i.e. basically all of industry, you're going to need the command line for lots of stuff.  The biggest C++ projects in the world tend not to use IDEs either, most notably llvm which uses Cmake.  Many big projects like PostgreSQL are accessed through the command line and configuration files, too.  The only people who try really hard to force the IDE are those who wish to lock you to a platform, at least in so far as I have seen.  The command line approach lets you go lots of places because it's mostly the same, but learning an IDE makes it very hard to leave that IDE, so god help you if it's in any way platform specific.  There are also some indications that microsoft has begun to realize this, as well: one of the demos my uncle attended in his role as manager of a big MS stack web company had Microsoft being excited to show off that you can use any editor you want with their new stuff that now runs on Linux, and Windows 10 has reworked the command prompt entirely to give better editing.
You're also wrong about Python.  I'm not going to claim that one language is "best", but I'm not going to allow misinformation either.  C# is not popular in this community.  I think there's like 2 or 3 finished projects in it.  Python and C# are about the same, though, if you go outside it.  The truth is that a majority of games for the sighted are written in C++ and using something else is niche no matter what it happens to be.  Wx is an accessible GUI library with examples, Pyglet is an accessible keyboard/mouse/graphics/sound library with good tutorials, and Pygame is incredibly popular for teaching new programmers game programming and has more documentation than the proceeding two combined.  C# game tutorials normally start by having you instal something else; this is typically SlimDX or XNA, as I recall from when I did my C# time.
There is one fast way to audiogames.  This is BGT.  It will jump-start you in that you can get sound working, but the only source of documentation you have is BGT's manual itself, and you'll leave once your project gets big enough.  Outside that, it's equally difficult to get keyboard and sound working in everything.  It is true that C# will give you access to windows messages pretty quickly, but no one works at that level; in addition, "pip install pyglet" at a terminal is equivalent to like 10 steps in Visual Studio, and I need only run it once, ever.  It is true that I had to post the other thread about Pyglet recently, but things like that particular issue can happen in any language; I'm sure something like it exists in C#.
And I'm not sure how .net is higher level than Python.  .net seems to be about the same.  I'm thinking you don't actually know Python.  Most Python concepts have an equivalent C# concept, and most C# concepts an equivalent Python one.  Most of the things that are left have to do with core philosophy: whether to be statically or dynamically typed.

My Blog
Twitter: @ajhicks1992

2015-02-16 17:56:54

@camlorn
Excuse my english, as you noticed for sure it's not my first language and some ideas are hard to explain for me, so maybe I expressed my point so bad.
I know, c# is not popular in this comunitiy (I supose you mean adiogames?), but I think it's not for the visual studio, it's cause a lot of people says: it's not accessible! use the command line!
In my opinion, you can do with visual studio all what you can do with command line, but you cannot do with command line all what visual studio offers.  This is a briev list of what I use every day in visual studio, only for those features, I code 50% faster than without the IDE:
IntelliSense (fully accessible for the most parts, using jaws or nvda): write "For", press tab a couple of times and you have your loop ready to use: the same for the most common snippets.
Code completion, generally speaking, mantains your code without misstakes, and keeps consistency (variable names, formating, etc).
Just type the name of a class, add a dot, and you obtain a menu with each property, field or method, that you can select with arrows and accept with another keypress. And finally,when you select a method, or you type it, you are presented with context help that gives you information about the parameters and a briev description.

A simple debugging line by line could help a lot, following code execution that you can read in your code edito
r.
The integrated IDE allows you to creatte folders and add resources
(dlls, sounds, images) in a windows classical tree view, an invalable feature to mantain big projects.

Adding new pakage libraries, lets say Mono Game, canot be easier: navigate to the corresponding menu, open the nuGet tool, select your pakage and press install.

And what about windows forms? Select and add controls to a form with some key presses, edit their properties (text, etc), show a list of their events and write code for each one...

Sure, there are developers who use command line tools, but... how many?
Please, if some of those features are abailable for python, I'd like to know, I want to experiment with it (python is a powerful language, acording to profesionals).
Maybe I'm lossing some great advantage of writing code in notepad
, but I don't know a faster way to create a couple of windows, write some algoritms and compyle than visual studio. THe same for a game (using XNA, certainly you have to install it before...)

Thanks for your time!

2015-02-16 19:54:32

Okay.  Well, I'm going to assume you're using Visual Studio 2008 with jaws.  Debugging does not work with NVDA.  Debugging never has.  After I managed to fight multiple inaccessible parts of submitting a bug report and including specifically what isn't working and how they can fix it, Microsoft's response was "we know, we can't get it into the next release", but it's been a problem for as far back as I went.  If youa re only stepping by line, you can.  But doing simple things like looking at variable values requires workarounds at best.  2010 and 2012 broke very basic things, though 2013 fixed some of them.  Autocomplete has never worked well, if at all.  Alt-tabbing doesn't work as soon as you use one of the high contrast color schemes (no, I don't know why, and if you had asked me I'd have said it was impossible to break it in this way).  Formatting information is not available.  Autocomplete might work, but by the time I'm done dealing with all the other problems I've honestly stopped caring, and autocomplete isn't a big deal anyway.  The only IDE that rates as fully accessible is Eclipse, and even there NVDA requires at least one workaround.
For C++, I use CMake for building and cdb for debugging, though I will admit that cdb is somewhat cryptic until you learn it some.  Most languages  have command line debuggers, with c# being a rare exception.  That said, cdb may work on it-I've not had occasion to try.
The way you manage resources in a sane world is to stick them in the directory structure.  You don't need Visual Studio to do this for you.  If you are using one of the custom formats like xnb, you should know that that's an incredibly awful thing.  And if you aren't, then VS is literally just copying a file on your behalf, and you can do it in even less time in Windows explorer by typing paths in the address bar.  All of my projects have a little snippet of code that knows how to find the sounds directory and give me a sound object in whatever audio system I'm using, and I add new resources simply by putting the new file in that directory.  The idea of the project as separate from the directory is completely false.
In terms of building C#, there's basically 0 compile time-you can get away without incremental building for a project the size of an audiogame.  Failing that, you can use nmake or gnu make on them just fine.  The only times you need MSBuild is if your project needs WPF or is targeting WinRT.  99% of games don't need either of these.
You've tied yourself to VS.  Judging by other posts, you are a new programmer.  This is therefore not surprising.  Unfortunately, as a blind person, that's not optimal.  It may be about the same if you take the time to memorize keystrokes to get around accessibility issues, but the whole point of an IDE is that you can glance at things.  And we can't.  I think that in the sighted world IDEs serve three purposes: GUI designers, crutches for new programmers, and a system for quickly presenting information to a user who can move their attention at literally a thought.  GUI designers don't apply.  Crutch kind of does because you can avoid the command line for a little while longer.  Our method of moving our attention is to use multiple keystrokes and basically completely switch from what we're doing to something else, presuming that the part of the IDE we want is accessible in the first place.  I have toyed with the idea of making an IDE or at least a text editor aimed at the blind, but this just isn't worth the effort; if I did, I think I could do some nice things that would actually bring some of the benefit to us, but it'd almost certainly need to be self voicing.
Unless you're partially sighted, GUI design isn't something you will be able to do effectively.  That said, those lists are just method calls, and if you actually learn them instead of using the editors you can go faster.  Navigating huge lists of hundreds of items is not a fast way to write anything.   Wx does not give you an editor like that, but you can still make the method calls.  There's also an abstraction aimed at the blind called gui_builder, but it's undocumented and a new Python programmer isn't going to be able to figure it out without docs.  That aside, though, at least half of audiogames don't use GUI components, and most games in general need a completely different structure than a GUI provides anyway.
I'm assuming you're somewhat new to programming as we had the Screen Reader API thread.  As you learn to program more, your ability to memorize things and not need the features you're leaning on will go away.  I think the dependence will go away even faster if you choose to explicitly work on it.  Most libraries and components are well written so that you can guess the name of something, or at least so that once you know the name it's kind of obvious why it is called what it is.  I don't know what common code snippets are.  The only thing I can think of is a for loop header.  Everything else needs customization, and by the time you're done customizing you should probably have just typed it to start with.  If you realy need project templates, set up a project somewhere and copy its directory.
As for who uses command line tools in the sighted community, basically anyone who is not either a Microsoft or Apple shop.  Parts of Android development require it.  Node.js, Python and Ruby all provide everything except autocomplete at the terminal.  This includes getting packages installed and line-by-line debugging.  Linux and OS X make system libraries a first class citizen, and installing them is one command at a terminal in both of those as well.  Go, Rust, Nim, Haskell and D do not have fully featured IDEs to my knowledge.  Of those, D is the only language I can think of an IDE for at all.  LLVM is one of the biggest and most important C/C++ projects and takes something like an hour to fully build.  It does not use an IDE, probably because it outgrew all of them.  Pypy is a very cool project that overturned huge parts of CS by successfully going against a bunch of things that people would have argued were basically facts.  Again, no IDE.  Firefox.  Linux.  Probably windows, judging from what people who have worked at Microsoft have told me.  Anything C/C++ that's supposed to run on Android.  Software for half the microcontrollers and embedded processors on the market.  Most Linux software.  I rest my case, and I haven't even talked about how you get big multidisciplinary teams where standardizing on an IDE can't be done because everyone knows something completely, completely different from everyone else.

My Blog
Twitter: @ajhicks1992

2015-02-16 20:03:17

Camlorn, while you are correct that C# is not very popular in the audio games community there are a bit more than two or three finished projects in it. Off the top of my head I know Treasure Hunt, 3D Velocity, Entombed, Final Conflict, and Tactical Battles were all written in C#. Plus there were a number of free uncompleted projects like Mysteries of the Ancients, Montezuma's Revenge, Shoot De Me, and a few others written in it. However, that aside your point still stands that it has not been very popular as a game programming language for audio game developers. That isn't to say it isn't a decent language for game programming because it certainly can be.

Alan, I do see where you are coming from. As someone who has extensively programmed both in C# and Python I'll state that the advantages in this case are very different. It largely comes down to personal preference rather than any outright objective difference that makes one choice better than the other.

In your personal case you prefer graphical IDEs with all the bells and whistles. That's fine. However, there aren't any IDEs like Visual Studio or Mono Develop for Python that I am personally aware of. For a coder most of the time the best you can do is code your application in a text editor like Notepad rather than click on some toolbox to drag and drop components to build forms or have automatic code completion. If that is what you are looking for I can't think of any Python tools to provide a similar function. That isn't to say Python is a bad choice though.

What makes Python attractive for developers is it is fairly simple to learn and use. Rather than having to remember to start and end code blocks with braces, to terminate lines with a semi, and other C type conventions Python uses your indentation to mark the beginning and end of code blocks which is actually simpler and easier to keep track of. Python allows a developer to create variables on the fly without having to define them first by specifically declaring its data type making it quicker and easier to do some rapid prototyping and coding. Python is very cross-platform making it easy to develop applications for Windows, Mac, and Linux making it an ideal choice where programming for multiple platforms is an issue. So while there may not be all the tools you are use to having available for Python as a language Python is fairly decent for what it does and is a great tool to have in a programmers toolbox.

As for Python's use professionally that is debatable. I see it more as a blue collar type language. By that I mean it is simple enough for amateur developers to learn and use, and allows the common computer user to learn how to develop programs, to write scripts, and to quickly make an app he or she  needs without having to deal with all the complexity and overhead of a language like C# and tools like Visual Studio. All one needs is a compatible Python runtime and a text editor and voila. Python's strength, as it were, is cutting out all the unnecessary overhead and complexity of other languages to cut things down to the basics you need to get the job done. That holds true for structure, syntax, and tools while not surrendering much in over all functionality.

Sincerely,
Thomas Ward
USA Games Interactive
http://www.usagamesinteractive.com

2015-02-16 20:32:53

And to be completely clear.  I think that a fully accessible and convenient IDE would be a wonderful thing.  My objections are based purely around being blind and having accessibility issues, not around an IDE being a bad idea in general.  If I could be hired to work on it, I'd not mind making one aimed at the blind.  But there's no market, so that'll never happen.
As for Python professionally, yeah, ease of use is probably part of it.  If you know any programming language, you know Python.  It's undeniably big in two areas, however.  The first of these is web, and that probably comes back to the ease of use; also, it's got Django which is a big deal by itself.  The other one is, surprisingly, high-performance numerical computing and, basically, "science".  Python is the most powerful calculator on your system.  It can do all your Algebra 1 and 2 homework and a good bit of your calculus homework with little to no effort.  If only it could also show the work.  Python laughs at DSP, statistics, probability, etc.  Ironically this is because of Numpy, Scipy, and Sympy, all of which come together to give you the power of matlab in a general-purpose programming environment.  The irony is that you could probably write a pretty high-performance physics simulation system in Python by backing onto Numpy and only be 2 or so times slower than C. Also, there's at least one project that can give you a computing cluster ready for your high-performance machine learning project in an afternoon or so of tinkering (if you're wondering, I have a potential thing for Libaudioverse that involves finding "magic" numbers that I might do, so I looked int it).
But since I'm actually more neutral than I appear, I'll also play devil's advocate.  For extremely large systems (100 kloc or so) choosing a statically typed language may be a better choice because the compiler will be able to catch potential issues faster.  Python is incredibly slow in and of itself, and multi-core programming without calling C requires spawning more Python subprocesses.  The Python 2 and Python 3 split is painful, but maybe resolving itself soonish as people continue migrating.   There are some obscure pain points here and there having to do with something called the descriptor.  Python is a memory hog and so, for large datasets, you have to explicitly use packed arrays.  There are 4 ways to bind to C instead of just one, though none of them have much of an advantage and you can just pick the one you like.  Finally, packaging can be a bit painful the first time you do it.
Not that much of that applies to games, though.

My Blog
Twitter: @ajhicks1992

2015-02-17 00:07:19

Hi there, and thanks for your information.
I use visual Studio 2013, with both Jaws and NVDA. I'm not a profesional developer, obviously, but I have some experience programing for personal purposes: scripting, some criptography games, tools for audio editing, a couple of engines to search and download files from file sharing services, plus contributions to standart visual amateur games, ETC.
My workflow is as follows: once my application is ready, I ask a sighted friend to format and arrange controls on the forms  I made. It's not perfect, but again, doing it by command line don't solve tthe problem.

Autocompletion and intelliSense works well for me, no workaronds needed... Looking variable values certainly are not accessible friendly, but, well, notepad don't let you anything simmilar smile.
You have o learn some keystrokes, but no more than 6 (toolbars and contextual menus will save the day)..; on the other hand, you will not need anymore commands for compyling, lists and more lists of properties, fields, classes, etc, etc, cause you can select dinamically from the corresponding menu, and intellisense remembers recent selections...
I am not saying I'm not able to memorise new keywords, as Sherlock Holmes said: "Sometimes I have to delete something!". Lol.

The reasons that made me interested in Python are:
cross platform capabilities, its numerical computing performance and pure curiosity...
However, c# or any .net, in my opinion, are fully usable to develop windows forms applications and simple games (VIsual Studio 2013 and Jaws 16 or NVDA). It's fast, secure and free. Anyways, I understand python it's a much better option to develop powerful tools and port them to other platforms.

@Tward
I completelly agree, I admit, it's nothing but a  personal preference. What I'm trying to say it's that a lot of people think there is no alternative, and fortunately, it's not te case. It was when I started programing: or notepad or nothing!
(Ah, thanks for your great games).

I have to finish a translation to c# of the language tutorial included in BGT... One day... And maybe some podcast demonstrating howtos in C# and Visual Studio, if someone interested.
Excuse this long, long post. Nevermore!

2015-02-17 00:27:56

You are right about only needing 6 keystrokes, technically.  I would hate to see your productivity, however.  My build is about 3 keystrokes ("jom").  My debugger lets me have everything.  C# doesn't have a good debugger if you're blind and Java may not.  But everything else I'm aware of does.  I have the ability to go line by line and pull out variable info, CPU registers, and contents of specific memory addresses if needed.  I'm almost sure I have watchpoints, but have never once needed this functionality, so I can't tell you.  Again, all of these things are two keystrokes or so plus a name.  In fairness, most of this works in VS with Jaws, to one extent or another, but the sheer amount of time needed to switch from window to window is insane.
As for GUI development, yeah, I suppose there's the sighted person approach.  I don't develop stuff with GUIs.  If I did, I'd do it some myself as I can get far enough that things aren't overlapping, and then ask sighted people to describe what they'd like it to look like.  I suggest looking at system.windows.forms.FlowLayoutPanel and system.windows.forms.TableLayoutPanel.  These are helpful.  most other GUI frameworks have equivalents, and the irony is that the designer starts to fall down hard if you start talking about devices with anywhere from a 5 inch to a 50 inch screen.  Surprisingly enough, as of Windows 10, this appears to be the case.

My Blog
Twitter: @ajhicks1992

2015-02-22 19:44:37

The thing I don't get about python is this: Why can't you compile Python code into native executables for all OSes. I know that there's py2exe, but that only works with Python2.x. Is there one for python3? If so, what is it?
Another thing that I don't like is that WXWidgets doesn't work with Python3 at all. Its only Python2 compatible. Can you link me to a WX3 hybrid for Python3?

"On two occasions I have been asked [by members of Parliament!]: 'Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out ?' I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question."    — Charles Babbage.
My Github

2015-02-22 20:54:30

Py2exe does now work with Python 3.  In fact, the Python 3 version is better, at least looking at the docs: it now supports zipped eggs properly.  There's also cx_freeze and Py2app.
As for Python 3, though, you should really be on 2.  There might be a WX somewhere, but that's only the beginning of your problems.  When they went from 2 to 3, they intentionally broke backward compatibility.  And the backlash and time to migrate was way higher than they wanted it to be.  2 is still seeing active development, just not new features, and it's easier to find backports than it is to find packages for 3.  There are a lot of essential packages that haven't moved yet, so no one really has motivation to port their nonessential packages.
You'd not be missing much by staying on 2, anyway.  New features in 3 are not things that are super helpful for audiogames, and 2 is probably going to be seeing patches and security updates for at least another 5 years.

My Blog
Twitter: @ajhicks1992

2015-02-22 23:16:41

Yes, but I still appreciate Python3. All the newer python books use python 3, anyways. I've already found PyQT, which seems to be reasonably accessible.

"On two occasions I have been asked [by members of Parliament!]: 'Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out ?' I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question."    — Charles Babbage.
My Github

2015-02-22 23:41:04

Guitarman,

If you want someone to bounce questions off of you may add me to skype or twitter. I find that by teaching, I learn as well. smile

Just let me know if you want to do this and what medium and I'll give you the right ID.

Balliol

2015-02-23 00:10:32

Hi Balliol.
I would really appreciate that but I don't like skype at all so you can contact me on here or come and find me on facebook if you have an account my real name is Cody Burns.
But since you offered I have a question I've been wanting to ask. I'm still slowly learning but I've been thinking if I can learn python I would like to make an online game like swamp or death match a new beginning. My question is this I would like to make a completely cross-platform game that would run on windows, mac, linux, android, and chromeOs. So I was wondering is it possible to do something like this with python? It would be awesome to have a game that all people can play no matter what operating system they have.
Anyway I'm far from making a game I can't even play a sound yet lol. It's just I've had this idea for a long time which would be awesome if I could actually do it.

Guitarman.
What has been created in the laws of nature holds true in the laws of magic as well. Where there is light, there is darkness,  and where there is life, there is also death.
Aerodyne: first of the wizard order

2015-02-23 02:14:51

@guitarman, I could probably help you in this matter, if you wish.

"On two occasions I have been asked [by members of Parliament!]: 'Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out ?' I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question."    — Charles Babbage.
My Github

2015-02-23 04:22:30

@guitarman
Online games are not exactly simple, though they're not as difficult as I used to believe they were.  A cross-platform one is going to almost certainly need multiple programming languages.  By the time you know enough to really have a go at one that is viable in the long-term, using multiple programming languages in a project will not sound as horrible as it does now.  To support Android, you probably need Java. To support ChromeOS, you would probably want to write a version of the client that loads as a web page and uses WebAudio, which will probably be available on everything by the time you get there (right now it's still a draft specification).  Windows, Linux, and Mac are Python if you want them to be.  If you wanted iOS, you're looking at Objective-c or Ruby Motion, though technically there's Kivy (which is Python, but with inaccessible widgets).  The one thing to note is that even if you do find a programming language that runs on everything, parts of the project are still not cross-platform and, by using something that is not only for the platform in question, you may end up offering a sub-par experience.
The server is a more interesting question.  I'm hoping to have actual statistics to go off of soon, but it is not inconceivable that you would maybe need something more performant for it.  Again, switching programming languages will be basically nothing by the time you're ready to do this.  And Pypy will probably be a lot further along than where it is, which is already pretty impressive.  But Python can be kind of ram hungry, so depending on what specifically you're trying to do and how many players you have, you might start hurting.  There is a huge emphasis on might here: it is only that, if there is one place where you need a really performant programming language in Audiogame development, the server for an online MMO-style game is it.
As alluded to, one of my short term goals is to get some measurements.  Unfortunately, I'm deadlocked on that project until the week after next when I can take the time to write the GUI for editing stuff; it's too complicated for me to be able to write editors for it quickly, and it looks like there's an intermediate step in which I write a GUI library aimed at problems like it.  I'm sitting on an engine architecture which looks like it will work for just about any online game you'd want to make, so I'm going to build it to a certain point and then stress test it.  And perhaps Aprone has some actual performance data he'd be willing to share if asked.
@ethin
What parts of PyQT have you tested and with what readers?  because QT itself has a lot of irritating issues at the best of times, and some readers work something like 10x better or worse than others.  Also, you can't use QT in commercial anything without paying for it, and I believe the free version is GPL, so you also can't close-source your app.
But seriously, you're handicapping yourself.  All of the intermediate game packages are among those that haven't moved.  Gevent and Twisted are most notable for online stuff but there's also gameobjects (the only transformation matrix library I could find), PyOde (collision and Physics), Pybox2d (more collision and physics)...just use an older book.  I looked up the official date for the end of maintenance of Python 2.7, and it's not until 2020.

My Blog
Twitter: @ajhicks1992