Install and Run Pygame on GameShell with Miniconda

Connect to GameShell via ssh

ssh cpi@192.168.1.112

cpi@192.168.1.112’s password: [type “cpi”]

Linux clockworkpi …

cpi@clockworkpi:~$ pwd

/home/cpi

You can find the address to “ssh" to by navigating to “tiny cloud” in the GameShell. The default username and password are both “cpi”.

Create a folder “downloads” in “/home/cpi/“, where we will place the Miniconda install script later.

mkdir downloads

ls

apps downloads games launcher launchergo music skins

Download Miniconda for Linux and Move to GameShell

I already download the miniconda install script (https://repo.anaconda.com/miniconda/Miniconda-3.16.0-Linux-armv7l.sh, which is renamed miniconda-install.sh) on the computer and thus I just “scp” it to the GameShell. Alternatively, you can of course download the Anaconda install script directly to the GameShell after “ssh” to it.

cd ~/Downloads

~/Downloads >> scp miniconda-install.sh cpi@192.168.1.112:/home/cpi/downloads

Wait until the transferring/downloading process done.

Install Miniconda on GameShell

Login to GameShell and install Miniconda.

ssh cpi@192.168.1.112

cpi@192.168.1.112’s password: [type “cpi”]

Linux clockworkpi …

cpi@clockworkpi:~$ bash downloads/miniconda-install.sh

Read the terms and follow the promotions to install Miniconda. Then create the environment, say “first”, install “SDL” ([2]) and “pygame".

cpi@clockworkpi:~$ conda create -n first python=2.7

Install SDL ([2])

cpi@clockworkpi:~$ cd downloads

cpi@clockworkpi:~/downloads$ wget http://www.libsdl.org/release/SDL-1.2.14.tar.gz

cpi@clockworkpi:~/downloads$ tar -xzvf SDL-1.2.14.tar.gz

cpi@clockworkpi:~/downloads$ cd SDL-1.2.14

cpi@clockworkpi:~/downloads$ ./configure --prefix=$HOME

cpi@clockworkpi:~/downloads$ make

cpi@clockworkpi:~/downloads$ make install

Install Pygame ([2])

cpi@clockworkpi:~$ source activate first

(first) cpi@clockworkpi:~$ cd downloads

(first) cpi@clockworkpi:~/downloads$ wget https://www.pygame.org/ftp/pygame-1.9.1release.tar.gz

(first) cpi@clockworkpi:~/downloads$ tar -xzvf pygame-1.9.1release.tar.gz

(first) cpi@clockworkpi:~/downloads$ cd pygame-1.9.1release

Comment out the line starting with “_camera” in “Setup”, and then install the “pygame” by running:

(first) cpi@clockworkpi:~/downloads$python setup.py install

Now you can import “pygame”.

(first) cpi@clockworkpi:~/downloads$python

Python 2.7.10 …

import pygame

Create a Game and Start in GameShell

Connect to GameShell and navigate into the games. Create a repository “first_game” for the new game.

(first) cpi@clockworkpi:~$ cd games

(first) cpi@clockworkpi:~/games$ mkdir first_game

Create the pygame script “first.py” in “~/games/first_game".

import os, sys, random, time, datetime, math

import pygame

from pygame.locals import *

from pygame.color import *

GS_KEY_MENU = 27

GS_KEY_X = 117

GS_KEY_Y = 105

GS_KEY_A = 106

GS_KEY_B = 107

GS_KEY_UP = 273

GS_KEY_DOWN = 274

GS_KEY_RIGHT = 275

GS_KEY_LEFT = 276

GS_KEY_SELECT = 32

GS_KEY_START = 13

class First :

def __init__(self) :

    self.width = 320

    self.height = 240

    self.delta = 0.2

    self.event = None

def draw(self, screen) :

    pygame.display.flip()

    screen.fill(THECOLORS["white"])

    screen.blit(pygame.font.Font(None, 24).render("Hello world!", 1, THECOLORS["black"]), (10, 10))

    screen.blit(pygame.font.Font(None, 24).render("You pressed: %s" % self.event, 1, THECOLORS["black"]), (10, 50))

    pygame.display.flip()

def run(self) :

    pygame.init()

    screen = pygame.display.set_mode((0, 0), pygame.FULLSCREEN)

    screen.fill(THECOLORS["white"])

    clock = pygame.time.Clock()

    running = True

    while running :

        for event in pygame.event.get():

            if event.type == QUIT:

                running = False

            elif event.type == KEYDOWN :

                self.event = event.key

                if event.key == GS_KEY_MENU :

                    running = False

        self.draw(screen)

        pygame.event.pump()

        clock.tick(1 / self.delta)

if name == “main” :

game = First()

game.run()

Then create an entrance shell “11_First.sh” in the launcher of GameShell.

(first) cpi@clockworkpi:~$ cd launcher/Menu/GameShell

(first) cpi@clockworkpi:~$ vi 11_First.sh

The content of “11_First.sh” should be like this.

#! /bin/bash

source activate first

python ~/games/first_game/first.py

You can also make an icon for the new game, say a png picture “First.png”, and put it into “~/launcher/skin/default/Menu/GameShell”.

Reload the UI, and now you should see a new app named “First” in the launcher. Enter it, you will see “Hello world!” followed by a promotion to tell you the code of the last pressed key. If you followed exactly what are given in “first.py”, then you can exit the first game and back to the launcher by pressing the button “MENU” on the GameShell.

That’s all. Happy coding!

References

[1] Installing on Linux — Anaconda documentation

[2] https://community.webfaction.com/questions/315/how-do-i-install-pygame

[3] GitHub - pvcraven/gameshell_template: Python Arcade Gameshell Template

2 Likes

Hello! Thank you for this guide! it’s the only guide that i’ve found on the internet about PyGame on GameShell. But i guess i’m missing some steps in order to run Pygame sample successfully - i get only a black screen for couple of seconds and then i return to main menu.
The first time i’ve tried to follow this guide i’ve missed the line where you need to create first conda environment: conda create -n first python=2.7, but next time i’ve ran it.
Maybe there is some other steps not mentioned in this guide? How should i debug my problem? i’m not expirienced with linux and just wanted to tinker with and with pygame, but stuck right at the beginning :frowning:

UPD: After one more try i get this message while installing PyGame:


Hunting dependencies...
sh: 1: smpeg-config: not found
WARNING: "smpeg-config" failed!
SDL     : found 1.2.14
FONT    : not found
IMAGE   : not found
MIXER   : not found
SMPEG   : not found
PNG     : not found
JPEG    : not found
SCRAP   : not found
PORTMIDI: not found
PORTTIME: not found

Should i install those libs as well?

Hi~It has been a while since I wrote this post, but I think all the steps are recorded, and as I remembered, SDL is the only package you need to handle before installing pygame. Did you install pygame from the source?

yes, i believe i’ve installed PyGame as described in your guide.
i’ve tried to follow your guide one more time and now i get error when trying to call import pygame:

(first)cpi@clockworkpi:~/downloads$ python
Python 2.7.10 |Continuum Analytics, Inc.| (default, Oct 28 2015, 19:48:38)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://anaconda.org
>>> import pygame
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/cpi/miniconda/envs/first/lib/python2.7/site-packages/pygame/__init__.py", line 95, in <module>
    from pygame.base import *
ImportError: /home/cpi/lib/libSDL-1.2.so.0: undefined symbol: _XGetRequest
>>>

After a quick search, it seems an old problem due to the incompatible version of other libraries, like libX11. As I can’t repeat this issue on my gameshell, I am not sure in your case which library should be updated. By the way, I repost this guide in a better format [Repost with Snapshot] Install and Run Pygame on GameShell with Miniconda. Hope to hear your problem being solved in the end.

UPDATE: I see someone said this problem appears after update SDL to 1.2.15, which version you used?

The same as in the guide (i’ve copied commands into Putty console)

i’ll try to follow your guide, hope that i’ll able to finish it successfully :slight_smile: