(Jan-22-2019, 11:37 PM)sneakyimp Wrote: [ -> ]Is there big demand for games written in python or for pygame skills? The word "pygame" doesn't even appear on los angeles craigslist.
This logic doesnt make any sense. First of all why would you search software on Craigslist? Secondly, if you replace pygame with the most known programming language your first result is rental apartments that include A/
C++ (air conditioning). This has no merit in whether to weigh software's value.
(Jan-22-2019, 11:37 PM)sneakyimp Wrote: [ -> ]4) My enthusiasm to embrace pygame is hampered by the thought that it doesn't work on the latest version OSX unless you also upgrade to python 3 or bundle python 3 with your installer. OSX distributes python 2.7.
I know its frustrating. A lot of people have problems. You might continue to have them if you are not willing to try things such as using python3.x. Problems with pygame is not the only reason i will never buy an Apple product

.
(Jan-22-2019, 11:37 PM)sneakyimp Wrote: [ -> ]Upgrading to python 3 on my Mac might remedy some pygame problems, but that would render the last 2 chapters in my book moot.
That is not completely true. There are minor differences in the majority of tutorials that are 2.x/3.x. Most tutorials can be ported to python3.x quite easily as long as you know the differences. You can search out the differences even on
our website. Pygame does work for both python2.x and python3.x. I cant say the same about livewires.
Python 2.x Syntax: 'bbb' for byte in strings
Python 3.x Syntax: b'bbb'
Python 2.x Syntax: 1.0/10 = 0.10000000000000001
Python 3.x Syntax: 1.0/10 = 0.1
Python 2.x Syntax: urllib.quote_plus()
Python 3.x Syntax: urllib.parse.quote_plus()
Python 2.x Syntax: String module functions
Python 3.x Syntax: String object methods
Python 2.x Syntax: urllib.URLopener
Python 3.x Syntax: urllib.request.URLopener
Python 2.x Syntax: intern()
Python 3.x Syntax: sys.intern()
Python 2.x Syntax: urllib.unquote_plus()
Python 3.x Syntax: urllib.parse.unquote_plus()
Python 2.x Syntax: __getattr__ run by built-ins
Python 3.x Syntax: Redefine __X__ methods in wrapper classes
Python 2.x Syntax: sys.exc_type, exc_value
Python 3.x Syntax: sys.exc_info()[0], [1]
Python 2.x Syntax: X.next
Python 3.x Syntax: X.__next__,called by next(X)
Python 2.x Syntax: gen.throw(ValueError, "bad value")
Python 3.x Syntax: gen.throw(ValueError("bad value"))
Python 2.x Syntax: Unbound methods
Python 3.x Syntax: Functions (staticmethod to call via instance)
Python 2.x Syntax: SimpleDialog
Python 3.x Syntax: tkinter.simpledialog
Python 2.x Syntax: whichdb
Python 3.x Syntax: dbm
Python 2.x Syntax: apply(f, ps, ks)
Python 3.x Syntax: f(*ps, **ks)
Python 2.x Syntax: tkFileDialog
Python 3.x Syntax: tkinter.filedialog
Python 2.x Syntax: basestring()
Python 3.x Syntax: str()
Python 2.x Syntax: D.keys, etc. as lists
Python 3.x Syntax: list(D.keys()) (dictionary views)
Python 2.x Syntax: dbm
Python 3.x Syntax: dbm.ndbm
Python 2.x Syntax: urllib.urlcleanup()
Python 3.x Syntax: urllib.request.urlcleanup()
Python 2.x Syntax: file
Python 3.x Syntax: open(and io module classes)
Python 2.x Syntax: httplib
Python 3.x Syntax: http.client
Python 2.x Syntax: input
Python 3.x Syntax: eval(input())
Python 2.x Syntax: exec open(filename)
Python 3.x Syntax: exec(open(filename).read())
Python 2.x Syntax: BaseHTTPServer
Python 3.x Syntax: http.server
Python 2.x Syntax: cStringIO.StringIO()
Python 3.x Syntax: io.StringIO
Python 2.x Syntax: urllib.pathname2url()
Python 3.x Syntax: urllib.request.pathname2url()
Python 2.x Syntax: SimpleXMLRPCServer
Python 3.x Syntax: xmlrpc.server
Python 2.x Syntax: map(), range, etc. as lists
Python 3.x Syntax: list(map()), list(range()) (built-ins)
Python 2.x Syntax: itertools.izip()
Python 3.x Syntax: zip()
Python 2.x Syntax: itertools.ifilterfalse()
Python 3.x Syntax: itertools.filterfalse()
Python 2.x Syntax: urllib2.HTTPCookieProcessor
Python 3.x Syntax: urllib.request.HTTPCookieProcessor
Python 2.x Syntax: os.popen2, os.popen3, os.popen4
Python 3.x Syntax: subprocess.Popen()
Python 2.x Syntax: unichr()
Python 3.x Syntax: chr()
Python 2.x Syntax: urllib2.HTTPPasswordMgr
Python 3.x Syntax: urllib.request.HTTPPasswordMgr
Python 2.x Syntax: __builtin__
Python 3.x Syntax: builtins
Python 2.x Syntax: X.__setslice__
Python 3.x Syntax: X.__setitem__ passed a slice object
Python 2.x Syntax: urllib.getproxies()
Python 3.x Syntax: urllib.request.getproxies()
Python 2.x Syntax: X.__cmp__(y)
Python 3.x Syntax: __lt__, __gt__, __eq__, etc.
Python 2.x Syntax: urllib.quote()
Python 3.x Syntax: urllib.parse.quote()
Python 2.x Syntax: urllib2.FileHandler
Python 3.x Syntax: urllib.request.FileHandler
Python 2.x Syntax: raise TypeError, msg, tb
Python 3.x Syntax: raise TypeError.with_traceback(tb)
Python 2.x Syntax: long()
Python 3.x Syntax: int()
Python 2.x Syntax: String-based exceptions
Python 3.x Syntax: Class-based exceptions (also required in 2.6)
Python 2.x Syntax: Dialog
Python 3.x Syntax: tkinter.dialog
Python 2.x Syntax: class MyException
Python 3.x Syntax: class MyException(Exception)
Python 2.x Syntax: anydbm
Python 3.x Syntax: dbm
Python 2.x Syntax: -t, -tt command-line switches
Python 3.x Syntax: inconsistant tabs/spaces use is always an error
Python 2.x Syntax: dummy_thread
Python 3.x Syntax: _dummy_thread
Python 2.x Syntax: SimpleHTTPServer
Python 3.x Syntax: http.server
Python 2.x Syntax: 'X'
Python 3.x Syntax: repr(X)
Python 2.x Syntax: urllib2.HTTPDigestAuthHandler
Python 3.x Syntax: urllib.request.HTTPDigestAuthHandler
Python 2.x Syntax: X=D.keys(); X.sort()
Python 3.x Syntax: sorted(D) (or list(D.keys()))
Python 2.x Syntax: map(None, ...)
Python 3.x Syntax: zip(or manuel code to pad results)
Python 2.x Syntax: except E, V:
Python 3.x Syntax: except E as X:
Python 2.x Syntax: urllib2.ProxyDigestAuthHandler
Python 3.x Syntax: urllib.request.ProxyDigestAuthHandler
Python 2.x Syntax: sort comparison functions
Python 3.x Syntax: Use key=transform or reverse=True
Python 2.x Syntax: reduce()
Python 3.x Syntax: functools.reduce()
Python 2.x Syntax: 10/1 = 10
Python 3.x Syntax: 10/1 = 10.0
Python 2.x Syntax: type(obj) == types.DictType
Python 3.x Syntax: isinstance(obj, dict)
Python 2.x Syntax: print >> F, x, y
Python 3.x Syntax: print(x, y, file=F)
Python 2.x Syntax: X.__hex__, X.__oct__
Python 3.x Syntax: X.__index__
Python 2.x Syntax: urllib2.OpenerDirector
Python 3.x Syntax: urllib.request.OpenerDirector
Python 2.x Syntax: itertools.imap()
Python 3.x Syntax: map()
Python 2.x Syntax: urllib2.ProxyBasicAuthHandler
Python 3.x Syntax: urllib.request.ProxyBasicAuthHandler
Python 2.x Syntax: cPickle
Python 3.x Syntax: pickle
Python 2.x Syntax: CGIHTTPServer
Python 3.x Syntax: http.server
Python 2.x Syntax: reload(M)
Python 3.x Syntax: imp.reload(M) (or exec)
Python 2.x Syntax: exceptions module
Python 3.x Syntax: built-in scope, library manual
Python 2.x Syntax: itertools.ifilter()
Python 3.x Syntax: filter()
Python 2.x Syntax: urllib2.CacheFTPHandler
Python 3.x Syntax: urllib.request.CacheFTPHandler
Python 2.x Syntax: urllib2.HTTPBasicAuthHandler
Python 3.x Syntax: urllib.request.HTTPBasicAuthHandler
Python 2.x Syntax: file.xreadlines
Python 3.x Syntax: for line in file: (or X=iter(file))
Python 2.x Syntax: urllib2.urlopen()
Python 3.x Syntax: urllib.request.urlopen()
Python 2.x Syntax: Queue
Python 3.x Syntax: queue
Python 2.x Syntax: Tkinter
Python 3.x Syntax: tkinter
Python 2.x Syntax: urllib2.HTTPPasswordMgrWithDefaultRealm
Python 3.x Syntax: urllib.request.HTTPPasswordMgrWithDefaultRealm
Python 2.x Syntax: urllib2.Request
Python 3.x Syntax: urllib.request.Request
Python 2.x Syntax: from ... *, within a function
Python 3.x Syntax: May only appear at the top level of a file
Python 2.x Syntax: tkSimpleDialog
Python 3.x Syntax: tkinter.simpledialog
Python 2.x Syntax: gdbm
Python 3.x Syntax: dbm.gnu
Python 2.x Syntax: urllib2.HTTPRedirectHandler
Python 3.x Syntax: urllib.request.HTTPRedirectHandler
Python 2.x Syntax: urllib2.AbstractBasicAuthHandler
Python 3.x Syntax: urllib.request.AbstractBasicAuthHandler
Python 2.x Syntax: DocXMLRPCServer
Python 3.x Syntax: xmlrpc.server
Python 2.x Syntax: print x, y,
Python 3.x Syntax: print(x, y, end=' ')
Python 2.x Syntax: urllib2.ProxyHandler
Python 3.x Syntax: urllib.request.ProxyHandler
Python 2.x Syntax: cookielib
Python 3.x Syntax: http.cookiejar
Python 2.x Syntax: X.__getslice__
Python 3.x Syntax: X.__getitem__ passed a slice object
Python 2.x Syntax: Cookie
Python 3.x Syntax: http.cookies
Python 2.x Syntax: types.ListType
Python 3.x Syntax: list(types is for nonbuilt-in names only)
Python 2.x Syntax: def f((a, b)):
Python 3.x Syntax: def f(x): (a, b) = x
Python 2.x Syntax: execfile(filename)
Python 3.x Syntax: exec(open(filename).read())
Python 2.x Syntax: Dictionary <, >, <=, >=
Python 3.x Syntax: compare sorted(D.items()) (or loop code)
Python 2.x Syntax: _winreg
Python 3.x Syntax: winreg
Python 2.x Syntax: urlparse
Python 3.x Syntax: urllib.parse
Python 2.x Syntax: urllib2.AbstractDigestAuthHandler
Python 3.x Syntax: urllib.request.AbstractDigestAuthHandler
Python 2.x Syntax: thread
Python 3.x Syntax: _thread
Python 2.x Syntax: X.__nonzero__
Python 3.x Syntax: X.__bool__
Python 2.x Syntax: import mod, in same package
Python 3.x Syntax: from . import mod, package=relative form
Python 2.x Syntax: X <> Y
Python 3.x Syntax: x != Y
Python 2.x Syntax: SocketServer
Python 3.x Syntax: socketserver
Python 2.x Syntax: urllib.urlopen()
Python 3.x Syntax: urllib.request.urlopen()
Python 2.x Syntax: tkMessageBox
Python 3.x Syntax: tkinter.messagebox
Python 2.x Syntax: raw_input(K)
Python 3.x Syntax: input(K)
Python 2.x Syntax: copy_reg
Python 3.x Syntax: copyreg
Python 2.x Syntax: urllib.FancyURLopener
Python 3.x Syntax: urllib.request.FancyURLopener
Python 2.x Syntax: ScrolledText
Python 3.x Syntax: tkinter.scolledtext
Python 2.x Syntax: urllib2.install_opener()
Python 3.x Syntax: urllib.request.install_opener()
Python 2.x Syntax: dumbdbm
Python 3.x Syntax: dbm.dumb
Python 2.x Syntax: D.has_key(K)
Python 3.x Syntax: K in D (or D.get(key) != None)
Python 2.x Syntax: reload()
Python 3.x Syntax: imp.reload()
Python 2.x Syntax: urllib2.HTTPHandler
Python 3.x Syntax: urllib.request.HTTPHandler
Python 2.x Syntax: ConfigParser
Python 3.x Syntax: configparser
Python 2.x Syntax: raise "ahhhh!"
Python 3.x Syntax: raise Exception("ahhhh!")
Python 2.x Syntax: repr
Python 3.x Syntax: reprlib
Python 2.x Syntax: __metaclass__ = M
Python 3.x Syntax: class C(metaclass=M):
Python 2.x Syntax: tkFont
Python 3.x Syntax: tkinter.font
Python 2.x Syntax: urllib2.build_opener()
Python 3.x Syntax: urllib.request.build_opener()
Python 2.x Syntax: HTMLParser
Python 3.x Syntax: html.parser
Python 2.x Syntax: markupbase
Python 3.x Syntax: _markupbase
Python 2.x Syntax: FileDialog
Python 3.x Syntax: tkinter.FileDialog
Python 2.x Syntax: htmlentitydefs
Python 3.x Syntax: html.entities
Python 2.x Syntax: urllib.unquote()
Python 3.x Syntax: urllib.parse.unquote()
Python 2.x Syntax: Tix
Python 3.x Syntax: tkinter.tix
Python 2.x Syntax: urllib2.URLError
Python 3.x Syntax: urllib.error.URLError
Python 2.x Syntax: urllib2.FTPHandler
Python 3.x Syntax: urllib.request.FTPHandler
Python 2.x Syntax: function.func_code
Python 3.x Syntax: function.__code__
Python 2.x Syntax: print x, y
Python 3.x Syntax: print(x, y)
Python 2.x Syntax: urllib2.HTTPSHandler
Python 3.x Syntax: urllib.request.HTTPSHandler
Python 2.x Syntax: robotparser
Python 3.x Syntax: urllib.robotparser
Python 2.x Syntax: UserString
Python 3.x Syntax: collections.UserString
Python 2.x Syntax: xrange()
Python 3.x Syntax: range()
Python 2.x Syntax: Tkdnd
Python 3.x Syntax: tkinter.dnd
Python 2.x Syntax: urllib2.UnknownHandler
Python 3.x Syntax: urllib.request.UnknownHandler
Python 2.x Syntax: UserList
Python 3.x Syntax: collections.UserList
Python 2.x Syntax: urllib2.HTTPDefaultErrorHandler
Python 3.x Syntax: urllib.request.HTTPDefaultErrorHandler
Python 2.x Syntax: urllib2.BaseHandler
Python 3.x Syntax: urllib.request.BaseHandler
Python 2.x Syntax: Mixed type comparisons, sorts
Python 3.x Syntax: Nonnumeric mixted type comparisons are errors
Python 2.x Syntax: urllib.ContentTooShortError
Python 3.x Syntax: urllib.error.ContentTooShortError
Python 2.x Syntax: 1/10 = 0
Python 3.x Syntax: 1/10 = 0.1
Python 2.x Syntax: urllib2.HTTPError
Python 3.x Syntax: urllib.error.HTTPError
Python 2.x Syntax: cmp(x, y)
Python 3.x Syntax: (x > y) - (x < y)
Python 2.x Syntax: urllib.url2pathname()
Python 3.x Syntax: urllib.request.url2pathname()
Python 2.x Syntax: tkCommonDialog
Python 3.x Syntax: tkinter.commondialog
Python 2.x Syntax: commands
Python 3.x Syntax: subprocess
Python 2.x Syntax: urllib.urlencode()
Python 3.x Syntax: urllib.parse.urlencode()
Python 2.x Syntax: tkColorChooser
Python 3.x Syntax: tkinter.colorchooser
Python 2.x Syntax: u'ccc'
Python 3.x Syntax: 'ccc'
Python 2.x Syntax: Tkconstants
Python 3.x Syntax: tkinter.constants
Python 2.x Syntax: urllib.urlretrieve()
Python 3.x Syntax: urllib.request.urlretrieve()
most of which is not going to be applicable to a basic tutorial.
As a side note.
Python2.x is planning on being retired at the end of
this year. Some linux distros (arch and gentoo) started using python3.x back in 2013 as the default python. Python2.x was suppose to end completely in 2015, but was extended to 2020 only for security/bugfixes. After 2020 it is likely that there will not even be security updates or bugfixes for python2.x forcing everyone to abandon it due to security alone. Even on our website; we will remove the toplink
versions as python2.x will be archived. For example, if you were to post this issue a year from now....the proper answer would be to update to python3.x and to stop using a python2.x tutorial. I dont know if this is the problem or not.....but if i was a developer on pygame i would not worry about pygame working with python2.x on the latest mac release because of its soon to be death. I would be more focused on updating it to the latest python minor release and making sure it works for the majority.