I'M learning python and I can write very small simple programs with Tkinter or play sound through pygame. I've just started the book "Beginning Game Development with Python and Pygame". I'M in the earlier part of the book and I've just been given the program below. The thing is, even though I may know some basics, I find the following code to be intimidating to say the least. Am I over my head or is this expected at this level? Thanks.

import pygame
from pygame.locals import *
from sys import exit

pygame.init()

screen = pygame.display.set_mode((640, 480), 0, 32)

# create images with smooth gradients
def create_scales(height):
    red_scale_surface = pygame.surface.Surface((640, height))
    green_scale_surface = pygame.surface.Surface((640, height))
    blue_scale_surface = pygame.surface.Surface((640, height))
    
    for x in range(640):
        c = int((x/639.)*255.)
        red = (c, 0, 0)
        green = (0, c, 0)
        blue = (0, 0, c)
        line_rect = Rect(x, 0, 1, height)
        
        pygame.draw.rect(red_scale_surface, red, line_rect)
        pygame.draw.rect(green_scale_surface, green, line_rect)
        pygame.draw.rect(blue_scale_surface, blue, line_rect)
    return red_scale_surface, green_scale_surface, blue_scale_surface
red_scale, green_scale, blue_scale = create_scales(80)

color = [127, 127, 127]

while True:
    
    for event in pygame.event.get():
        if event.type == QUIT:
            exit()
            
    screen.fill((0, 0, 0))
    
    # Draw the scales to the screen
    screen.blit(red_scale, (0, 00))
    screen.blit(green_scale, (0, 80))
    screen.blit(blue_scale, (0, 160))
    
    x, y = pygame.mouse.get_pos()
    
    # If the mouse was pressed on the sliders, adjust the color component
    if pygame.mouse.get_pressed()[0]:
        for component in range(3):
            if y > component * 80 and y < (component + 1) * 80:
                color[component] = int((x/638.)*255.)
            
            pygame.display.set_caption("Pygame Color Test = " + str(tuple(color)))
            
            # Draw a circle for each slider to represent the current setting
            for component in range(3):
                pos = ( int((color[component]/255.)*639), component*80 + 40)
                pygame.draw.circle(screen, (255, 255, 255), pos, 20)
            pygame.draw.rect(screen, tuple(color), (0, 240, 640, 240))
            
            pygame.display.update()

Recommended Answers

All 2 Replies

Break it donw in sections, and try and figure out what they do and how they relate. Also, get an editor with an integrated debugger like 'Pyscripter', and use the 'execute to cursor' and 'step modes'. You can watch what the program does step by step to get a better understanding of how it operates. Spend a lot of time here reading and helping where you can.

All languages look intimidating when you first start with them.

Good luck..

You know about RGB colors?
The program only changes those three components showing current values in title bar.

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.