view atc_single.py @ 18:aa0391c55f93

TODO update committer: Jeff Sipek <jeffpc@jeff.(none)> 1120878980 -0400
author Jeff Sipek <jeffpc@jeff.(none)>
date Sat, 09 Jul 2005 03:16:20 -0400
parents 243941ec0a36
children 4c026c5634f9
line wrap: on
line source

#/*
# * ATC - Air Traffic Controller simulation game
# *
# * Copyright (C) 2004, 2005 Josef "Jeff" Sipek <jeffpc@optonline.net>
# *
# * This program is free software; you can redistribute it and/or modify
# * it under the terms of the GNU General Public License as published by
# * the Free Software Foundation; either version 2 of the License, or
# * (at your option) any later version.
# *
# * This program is distributed in the hope that it will be useful,
# * but WITHOUT ANY WARRANTY; without even the implied warranty of
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# * GNU General Public License for more details.
# *
# * You should have received a copy of the GNU General Public License
# * along with this program; if not, write to the Free Software
# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
# *
# * @(#) %M% %I% %E% %U%
# */

import pygame
import sys

import atc_colors
import atc_utils
import atc_plane
import atc_message

def single(screen):
	""" Main fn to run the single player game """
	
	# background music
	#atc_utils.playmusic("some.mp3");

	# Set background
	background = pygame.Surface(screen.get_size()).convert()
	background.fill(atc_colors.black)
	
	(back_image, back_rect) = atc_utils.load_png('data/image/background.png')
	background.blit(back_image, (0, 0))

	# Some text
#	font = pygame.font.Font(None, 36)
#	text = font.render("Air Traffic Controller", 1, atc_colors.red)
#	textpos = text.get_rect()
#	textpos.centerx = background.get_rect().centerx
#	background.blit(text, textpos)

	#blit!
	screen.blit(background, (0, 0))
	pygame.display.flip()

	planes = [atc_plane.Plane(callsign="N12422",flightno="Delta 79",vel=(50, 50, 10)),]
	
	mess = atc_message.Message()
	
	cmd = ""
	
	while 1:
		for event in pygame.event.get():
			if event.type == pygame.QUIT:
				mess.pickup_kill = 1
				sys.exit()
			if event.type == pygame.KEYDOWN:
				# commands
				#if event.key == pygame.K_q:
				#	mess.pickup_kill = 1
				#	return
				
				if event.key == pygame.K_a:
					cmd += 'A'
				if event.key == pygame.K_b:
					cmd += 'B'
				if event.key == pygame.K_c:
					cmd += 'C'
				if event.key == pygame.K_d:
					cmd += 'D'
				if event.key == pygame.K_e:
					cmd += 'E'
				if event.key == pygame.K_f:
					cmd += 'F'
				if event.key == pygame.K_g:
					cmd += 'G'
				if event.key == pygame.K_h:
					cmd += 'H'
				if event.key == pygame.K_i:
					cmd += 'I'
				if event.key == pygame.K_j:
					cmd += 'J'
				if event.key == pygame.K_k:
					cmd += 'K'
				if event.key == pygame.K_l:
					cmd += 'L'
				if event.key == pygame.K_m:
					cmd += 'M'
				if event.key == pygame.K_n:
					cmd += 'N'
				if event.key == pygame.K_o:
					cmd += 'O'
				if event.key == pygame.K_p:
					cmd += 'P'
				if event.key == pygame.K_q:
					cmd += 'Q'
				if event.key == pygame.K_r:
					cmd += 'R'
				if event.key == pygame.K_s:
					cmd += 'S'
				if event.key == pygame.K_t:
					cmd += 'T'
				if event.key == pygame.K_u:
					cmd += 'U'
				if event.key == pygame.K_v:
					cmd += 'V'
				if event.key == pygame.K_w:
					cmd += 'W'
				if event.key == pygame.K_x:
					cmd += 'X'
				if event.key == pygame.K_y:
					cmd += 'Y'
				if event.key == pygame.K_z:
					cmd += 'Z'
				
				if (event.key == pygame.K_0) or (event.key == pygame.K_KP0):
					cmd += '0'
				if (event.key == pygame.K_1) or (event.key == pygame.K_KP1):
					cmd += '1'
				if (event.key == pygame.K_2) or (event.key == pygame.K_KP2):
					cmd += '2'
				if (event.key == pygame.K_3) or (event.key == pygame.K_KP3):
					cmd += '3'
				if (event.key == pygame.K_4) or (event.key == pygame.K_KP4):
					cmd += '4'
				if (event.key == pygame.K_5) or (event.key == pygame.K_KP5):
					cmd += '5'
				if (event.key == pygame.K_6) or (event.key == pygame.K_KP6):
					cmd += '6'
				if (event.key == pygame.K_7) or (event.key == pygame.K_KP7):
					cmd += '7'
				if (event.key == pygame.K_8) or (event.key == pygame.K_KP8):
					cmd += '8'
				if (event.key == pygame.K_9) or (event.key == pygame.K_KP9):
					cmd += '9'
				
				if (event.key == pygame.K_COLON) or (event.key == pygame.K_SEMICOLON):
					cmd += ': '
				
				if event.key == pygame.K_SPACE:
					cmd += " "
								
				if event.key == pygame.K_ESCAPE:
					cmd = ""
				if event.key == pygame.K_BACKSPACE:
					cmd = cmd[:-1]
				
				if event.key == pygame.K_TAB:
					pass	# fixme, tab complete call signs/flight numbers, commands, etc.
				
				if (event.key == pygame.K_KP_ENTER) or (event.key == pygame.K_RETURN):
					if (cmd == "QUIT"):
						mess.pickup_kill = 1
						return
				
					flno = cmd_plane(cmd)
					cmd  = cmd_cmd(cmd)
					print "plane = " + flno + ", cmd = " + cmd
					for plane in planes:
						if plane.flightno.upper() == flno.upper():
							print "Found match!"
							plane.process(cmd)
							break
					cmd = ""
		
		screen.blit(background, (0, 0))
		
		for plane in planes:
			plane.display(screen)
			plane.update()
			if (plane.status == atc_plane.plane_CRASHED):
				mess.write(screen,plane.callsign + ": PLANE CRASHED")
				plane.status = atc_plane.plane_DEAD
		
		if (cmd):
			font = pygame.font.Font(None, 18)
			text = font.render(cmd, 1, atc_colors.white)
			screen.blit(text, (25, 735))
		
		pygame.display.flip()

def cmd_plane(cmd):
	return cmd.split(': ')[0]

def cmd_cmd(cmd):
	# FIXME: what if no split happens?
	return cmd.split(': ')[1]

if (__name__ == '__main__'):
	print "Don't do it!"