[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [pygame] Collaborative game in 8 weeks.



>> So we start with throwing some ideas around for a game, then make a
>> prototype.  We try and get game play finished early, then spend the rest 
>> of the time tweaking, and polishing it.
>> Anyone interested?   Who wants to propose some game ideas?

> * zelda style game. man that "zelda through time" game on snes was the
> * take the zelda game online. a little multiplayer online zelda game.
> * a squad-style counterstrike remake. two people play against each other
> * a "heroes of m&m" type game. good fun, i always wanted to do one of


I have a very bare bones skeleton for a 4 paddle breakout variant if
anyone wants it (see attachment).

Alan
#!/usr/bin/env python

import pygame
from pygame.locals import *

try:
	from OpenGL.GL import *
	from OpenGL.GLU import *
except:
	print 'The GLCUBE example requires PyOpenGL'
	raise SystemExit

#globals
winsize=512
winhalf=winsize/2
paddlethick=5
blocksize=20

def drawpaddle(paddle,paddlesize,gap):
	paddlehalf=paddlesize/2
	
	glBegin(GL_QUADS)
	#bottom
	glColor3f(1.0, 1.0, 0.0)
	glVertex3i(paddle-paddlehalf,winhalf-gap,0)
	glVertex3i(paddle+paddlehalf,winhalf-gap,0)
	glVertex3i(paddle+paddlehalf,winhalf-gap+paddlethick,0)
	glVertex3i(paddle-paddlehalf,winhalf-gap+paddlethick,0)
	#left
	glColor3f(1.0, 0.0, 0.0)
	glVertex3i(-winhalf+gap-paddlethick,paddle-paddlehalf,0)
	glVertex3i(-winhalf+gap,paddle-paddlehalf,0)
	glVertex3i(-winhalf+gap,paddle+paddlehalf,0)
	glVertex3i(-winhalf+gap-paddlethick,paddle+paddlehalf,0)
	#top
	glColor3f(0.0, 1.0, 0.0)
	glVertex3i(-paddle-paddlehalf,-winhalf+gap-paddlethick,0)
	glVertex3i(-paddle+paddlehalf,-winhalf+gap-paddlethick,0)
	glVertex3i(-paddle+paddlehalf,-winhalf+gap,0)
	glVertex3i(-paddle-paddlehalf,-winhalf+gap,0)
	#right
	glColor3f(0.0, 0.0, 1.0)
	glVertex3i(winhalf-gap,-paddle-paddlehalf,0)
	glVertex3i(winhalf-gap+paddlethick,-paddle-paddlehalf,0)
	glVertex3i(winhalf-gap+paddlethick,-paddle+paddlehalf,0)
	glVertex3i(winhalf-gap,-paddle+paddlehalf,0)

	#sw
	glColor3f(1.0, 1.0, 1.0)
	glVertex3i(-winhalf+gap-paddlethick,winhalf-gap,0)
	glVertex3i(-winhalf+paddlesize+paddlehalf,winhalf-gap,0)
	glVertex3i(-winhalf+paddlesize+paddlehalf,winhalf-gap+paddlethick,0)
	glVertex3i(-winhalf+gap-paddlethick,winhalf-gap+paddlethick,0)
	glVertex3i(-winhalf+gap-paddlethick,winhalf-paddlesize-paddlehalf,0)
	glVertex3i(-winhalf+gap,winhalf-paddlesize-paddlehalf,0)
	glVertex3i(-winhalf+gap,winhalf-gap,0)
	glVertex3i(-winhalf+gap-paddlethick,winhalf-gap,0)

	#nw
	glVertex3i(-winhalf+gap-paddlethick,-winhalf+gap-paddlethick,0)
	glVertex3i(-winhalf+paddlesize+paddlehalf,-winhalf+gap-paddlethick,0)
	glVertex3i(-winhalf+paddlesize+paddlehalf,-winhalf+gap,0)
	glVertex3i(-winhalf+gap-paddlethick,-winhalf+gap,0)
	glVertex3i(-winhalf+gap-paddlethick,-winhalf+gap-paddlethick,0)
	glVertex3i(-winhalf+gap,-winhalf+gap-paddlethick,0)
	glVertex3i(-winhalf+gap,-winhalf+paddlesize+paddlehalf,0)
	glVertex3i(-winhalf+gap-paddlethick,-winhalf+paddlesize+paddlehalf,0)

	#ne
	glVertex3i(winhalf-paddlesize-paddlehalf,-winhalf+gap-paddlethick,0)
	glVertex3i(winhalf-gap+paddlethick,-winhalf+gap-paddlethick,0)
	glVertex3i(winhalf-gap+paddlethick,-winhalf+gap,0)
	glVertex3i(winhalf-paddlesize-paddlehalf,-winhalf+gap,0)
	glVertex3i(winhalf-gap,-winhalf+gap-paddlethick,0)
	glVertex3i(winhalf-gap+paddlethick,-winhalf+gap-paddlethick,0)
	glVertex3i(winhalf-gap+paddlethick,-winhalf+paddlesize+paddlehalf,0)
	glVertex3i(winhalf-gap,-winhalf+paddlesize+paddlehalf,0)

	#sw
	glVertex3i(winhalf-paddlesize-paddlehalf,winhalf-gap,0)
	glVertex3i(winhalf-gap+paddlethick,winhalf-gap,0)
	glVertex3i(winhalf-gap+paddlethick,winhalf-gap+paddlethick,0)
	glVertex3i(winhalf-paddlesize-paddlehalf,winhalf-gap+paddlethick,0)
	glVertex3i(winhalf-gap,winhalf-paddlesize-paddlehalf,0)
	glVertex3i(winhalf-gap+paddlethick,winhalf-paddlesize-paddlehalf,0)
	glVertex3i(winhalf-gap+paddlethick,winhalf-gap+paddlethick,0)
	glVertex3i(winhalf-gap,winhalf-gap+paddlethick,0)
	glEnd()


def drawboard(boardrotate):
	glPushMatrix()
	#glTranslatef(256,256,0)
	glRotatef(boardrotate,0,0,1)

	glBegin(GL_QUADS)
	glColor3f(1.0, 0.0, 0.0)
	for row in range(-100,90,blocksize):
		for col in range(-100,90,blocksize):
			glVertex3i(col,row,0)
			glVertex3i(col+blocksize-2,row,0)
			glVertex3i(col+blocksize-2,row+blocksize-2,0)
			glVertex3i(col,row+blocksize-2,0)
	glEnd()
	glPopMatrix()


def drawball(x,y,ballsize):
	ballhalf=ballsize/2
	glBegin(GL_QUADS)
	glColor3f(0.0, 1.0, 1.0)
	glVertex3i(x-ballhalf,y-ballhalf,0)
	glVertex3i(x+ballhalf,y-ballhalf,0)
	glVertex3i(x+ballhalf,y+ballhalf,0)
	glVertex3i(x-ballhalf,y+ballhalf,0)
	glEnd()
	

def main():
	pygame.init()
	pygame.display.set_mode((winsize,winsize), OPENGL|DOUBLEBUF)

	glMatrixMode(GL_PROJECTION)
	glLoadIdentity()
	glOrtho(-winsize/2, winsize/2, winsize/2, -winsize/2, 10, -10)
	glMatrixMode(GL_MODELVIEW)
	
	pygame.mouse.set_visible(0)
	pygame.event.set_grab(1)
	
	paddle=0
	paddlesize=50
	paddlemax=winhalf-(paddlesize*2)
	boardrotate=10
	ballx=7
	bally=40
	dx=3
	dy=2
	gap=10
	ballsize=6

	while 1:
		#check for quit'n events
		event = pygame.event.poll()
		if event.type == QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE):
			pygame.mouse.set_visible(1)
			pygame.event.set_grab(0)
			break

		#logic
		mx,my=pygame.mouse.get_rel()
		paddle=paddle+mx
		if paddle>=paddlemax:
			paddle=paddlemax
		elif paddle<= -paddlemax:
			paddle= -paddlemax

		boardrotate+=0.2
		if boardrotate>=360:
			boardrotate=0

		ballx+=dx
		if ballx >= winhalf-gap:
			dx *= -1
		elif ballx <= -winhalf+gap:
			dx *= -1
			
		bally+=dy
		if bally >= winhalf-gap:
			dy *= -1
		elif bally <= -winhalf+gap:
			dy *= -1

		#painting
		glClear(GL_COLOR_BUFFER_BIT)
		drawpaddle(paddle,paddlesize,gap)
		drawboard(boardrotate)
		drawball(ballx, bally, ballsize)
		
		pygame.display.flip()
		pygame.time.wait(10)


if __name__ == '__main__': main()