Interesting idea. Is there a way of resizing an image? For example, if the user has a 10x10 grid, each square will be bigger than on a 15x15 grid. Also, I will need to catch keyboard keys (mostly ctrl-m, space, enter, and space/enter with modifiers) as well as mouse clicks (differentiating between left and right) for each square. So maybe you left click a square, or move to it and press ctrl-m. Can Pygame detect where on the grid that is with some sort of onImageClick type method, or do I have to track coordinates? Looks like I have to do a lot more reading on sprites. I heard the concept and coding is more difficult than basic Pygame. Oh, you mentioned using rects even with sprites; I am not sure why, then, I would not just use colored rects in the first place, maybe define a blue, red, and white rect and then just overwrite the current rect with the appropriate color by changing the new rect's left/top arguments? Again, I am quite new to this; I have not even done it in another language as I have done with other things, so I am coming at it with no reference. Thanks!
On 5/18/10, Jason M. Marshall <j...@yahoo.com> wrote: > Alex, > > In your situation, I would approach the problem differently. I think that > the sprite module's Group class and Sprite class would save you some time. > > If I were creating your GUI, I would pre-draw red, blue, and white images. > Then, I would make a Sprite for each square on your grid. I would make > references to the Sprite in two locations. First, I would put each Sprite in > a position in a 2D array. (I would implement this 2D array as a list of > lists; there's no need to be fancy.) Second, I would add every sprite to a > Group. For each sprite, a Rect would represent the Sprite's position and > size on the screen; this Rect would be assigned to Sprite.rect. The state of > each square (hit, miss, etc.) would be indicated by changing the > Sprite.image attribute to the appropriate pre-drawn image. > > Jason > > > > ________________________________ > From: Alex Hall <mehg...@gmail.com> > To: pygame-users@seul.org > Sent: Mon, May 17, 2010 11:24:15 PM > Subject: [pygame] question about Rect objects > > Hi all, > I am new to this list. A quick intro: > I am a blind college student studying for a computer science degree. I > use Jaws for Windows from Freedom Scientific to read the content of my > computer screen. I have a bit of vision, enough to see high-contrast > colors in a big enough window (500x500 or larger is good). > I use Python2.6 with the latest release of Pygame. I am trying to add > a visual element to a Battleship game I wrote last year. Originally, > the game was all based on screen readers; the user could arrow around > and their screen reader (the program that reads text on the computer) > would announce which square they were on and the status of that > square, among other information. No visuals were needed since most > screen readers offer an API which I can interface with directly. > However, I want to expand this to a 2-player, online game so my > sighted friend and I can play against each other. Of course, for that, > I need to give him something to look at. > > I am trying to generate a grid of rectangles, each rect a square on > the classic Battleship grid. All rects will start out gray, and will > then change color as the game progresses (red=hit, white=miss, > blue=enemy sighted). I have a Square class, which has variables like > firedOn or ship. That way I can examine the square on which the user > fired, change its firedOn from False to True, and say something like > "if(grid[i][j].ship!=None): #change color to red". You get the idea. > > Anyway, the pygame documentation says rect cannot be subclassed. Is > there any way, then, for me to put a rect object in my Square class, > then draw the grid using my grid (a 2d array of Squares)? I guess what > I want is to say: > bg.replace_ip(red, grid[i][j].rect) #change fired-on grid square to > red and redraw it > after building my grid of rects? I am quite new to Pygame, and this is > my first time venturing into the world of generating shapes and grids; > up to now, my involvement in visual elements has been some > experimenting with wxPython and XRC, and that package does most of the > layout for you. Any help with this grid problem would be greatly > appreciated, and please tell me if my above question and explanation > do not make sense (as I doubt they will). > > -- > Have a great day, > Alex (msg sent from GMail website) > mehg...@gmail.com; http://www.facebook.com/mehgcap > > > > -- Have a great day, Alex (msg sent from GMail website) mehg...@gmail.com; http://www.facebook.com/mehgcap