14 Replies - 2024 Views - Last Post: 19 January 2010 - 05:11 PM Rate Topic: -----

#1 ifemi  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 6
  • Joined: 11-November 09

New to python

Post icon  Posted 11 November 2009 - 03:42 PM

Hi everyone. I just joined the forum. I am new to programming. I will like to learn python because I was told it is easy to learn. Is there any suggestion on how to go about it. Is it possible to go through it in say, five days. I have an assignment which is due in two weeks. I have got an ebook, beginning game development with python and pygame but so far, with what I have gone through, it looks complicated. Any book I can start with that I will get a better understanding within this short period. Will keep you posted with my progress. Thanks in advance.

Is This A Good Question/Topic? 0
  • +

Replies To: New to python

#2 girasquid  Icon User is offline

  • Barbarbar
  • member icon

Reputation: 108
  • View blog
  • Posts: 1,825
  • Joined: 03-October 06

Re: New to python

Posted 11 November 2009 - 03:54 PM

Dive Into Python is a pretty good introduction to Python.
Was This Post Helpful? 0
  • +
  • -

#3 Dogstopper  Icon User is offline

  • The Ninjaducky
  • member icon



Reputation: 2874
  • View blog
  • Posts: 11,032
  • Joined: 15-July 08

Re: New to python

Posted 11 November 2009 - 03:55 PM

Hello! I'm Stephen. Round here, I have written many Python code snippets and 3 tutorials on using Python GUIs. However, for a learner these resources may prove more beneficial:

This is REALLY good for ABSOLUTE beginner:
http://www.byteofpython.info/

These two are really good as a supplement:
http://www.freenetpa.../hp/alan.gauld/
http://www.sthurlow.com/python/

Finally here is a list of resources from Python.org: (sometimes confusing)
http://wiki.python.o.../BeginnersGuide

There are links to beginner to programming and beginner to python...

-- Cheers!

View Postgirasquid, on 11 Nov, 2009 - 04:54 PM, said:

Dive Into Python is a pretty good introduction to Python.


As a beginner, I actually found this rather confusing. But that's up to you.
Was This Post Helpful? 0
  • +
  • -

#4 ifemi  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 6
  • Joined: 11-November 09

Re: New to python

Posted 11 November 2009 - 03:57 PM

Thanks. will check them out now.
Was This Post Helpful? 0
  • +
  • -

#5 xenor  Icon User is offline

  • D.I.C Head

Reputation: 1
  • View blog
  • Posts: 148
  • Joined: 23-September 09

Re: New to python

Posted 11 November 2009 - 04:36 PM

http://docs.python.o...rial/index.html
Was This Post Helpful? 0
  • +
  • -

#6 asj127  Icon User is offline

  • D.I.C Head

Reputation: 2
  • View blog
  • Posts: 157
  • Joined: 29-April 09

Re: New to python

Posted 11 November 2009 - 06:10 PM

I don't think Python's easy...
It might be easy for some things, but it's really annoying unless you get the code just right. Of course, part of that might be because it's so different from other languages I know.
Was This Post Helpful? 0
  • +
  • -

#7 Oler1s  Icon User is offline

  • D.I.C Lover
  • member icon

Reputation: 1395
  • View blog
  • Posts: 3,884
  • Joined: 04-June 09

Re: New to python

Posted 11 November 2009 - 08:02 PM

Quote

It might be easy for some things, but it's really annoying unless you get the code just right.
Wait, I'm sorry, but that's just a bizarre statement. What programming language do you use, which presumably, is not so annoying because you can get a correct program, without having correct code??

Quote

Of course, part of that might be because it's so different from other languages I know.
But I'm not aware of any programming language that allows you to approximately specify instructions and still get exact correct behavior...
Was This Post Helpful? 0
  • +
  • -

#8 bostonbull  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 1
  • Joined: 15-November 09

Re: New to python

Posted 15 November 2009 - 02:11 AM

Found a few very simple python examples here
Was This Post Helpful? 0
  • +
  • -

#9 ifemi  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 6
  • Joined: 11-November 09

Re: New to python

Posted 16 November 2009 - 06:30 AM

Hi, i have go through the links and still revisiting some. I have tried doing somethings but it like i'm either not getting the code right or something. I was able to open the pygame window, set the heading and do some little stuffs with respect to the materials i have gathered but i have just been able to use a little of it for my code. I am trying to create an ant world, where the ant could be increased or decreased using a bar and where the can move around randomly. if an ant sees food, it tries carrying it. if the weight of the food is less than that of the ant, it carries else, the ant recruits other ants within 2m of its location and depending on the weight, if the food is less than the total weight of the ants, they carry it else, more ants are recruited till the ant available are capable of carrying the food to the nest. I tried representing the nest with a circle and the food, a rectangle. I would also like to vary the weight of the food. Still working on the code I have got; i hope i can improve on it.

Thanks in advance. Will appreciate help pointing me in the right direction.


pygame.display.set_caption("Ant Simulation")
background = pygame.Surface(screen.get_size())
background = background.convert()
background.fill((0,255,0))
screen.blit(background, (0,0))

class antWorld(object):
	def __init__(self):
		self.ant = {}
		self.food = {}
		self.antNo = 0
		pygame.draw.circle(self.background,(200, 255, 200), (300,300), 200)
	def add_ant(self, ant):
		self.antNo += 1
class ant(object):
	def __init__(self, antWorld, antImage, antWeight):
		self.antWorld = antWorld
		self.antImage = antImage
		antImage = pygame.draw.circle(self.background,(230, 255, 219), )
		self.antWeight = 0
	def carryFood(self, foodImage):
		self.carry_food = foodImage
	#def dropFood(self, surface):
	
class food(object):
	def __init__(self, antWorld, foodImage, foodWeight):
		self.antWorld = antWorld
		self.foodImage = foodImage
		foodImage = pygame.draw.rectangle
		self.foodWeight = foodWeight

 

Was This Post Helpful? 0
  • +
  • -

#10 ifemi  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 6
  • Joined: 11-November 09

Re: New to python

Posted 16 November 2009 - 08:16 AM

hi, Im trying to draw a rectangle but im getting an error saying- an integer is required. can anyone help out pls.
[code]
import pygame
from pygame.locals import *
#self.font = pygame.font.Font(None, 64)
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Ant Simulation")
background = pygame.Surface(screen.get_size())
background = background.convert()
background.fill((0,255,0))
screen.blit(background, (0,0))
pygame.draw.circle(background, (0,0,255), (640/8,480/4), 60)
pygame.display.flip()
screen.blit(background, (0,0))
line1 = pygame.draw.line(background, (255,0,0), (580,50), (580,75), 2)
#screen.blit(font.render("weight", (0,255,0)), (10, 345))
pygame.display.flip()
screen.blit(background, (0,0))
line2 = pygame.draw.line(background, (0,0,255), (580,175), (580,250), 2)
pygame.display.flip()
screen.blit(background, (0,0))
pygame.draw.rect(background, (0,255,0), (25,25), (75,100))
pygame.display.flip()
screen.blit(background, (0,0))
pygame.draw.rect(background, (0,255,0), (25,175), (75,100))
pygame.display.flip()
screen.blit(background, (0,0))
Was This Post Helpful? 0
  • +
  • -

#11 ifemi  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 6
  • Joined: 11-November 09

Re: New to python

Posted 16 November 2009 - 08:55 AM

Hi, im back. i found the following code in a text but i would like it to be explained better. Thanks in advance.

SCREEN_SIZE = (640, 480)
NEST_POSITION = (320, 240)
ANT_COUNT = 20
NEST_SIZE = 100.
import pygame
from pygame.locals import *
from random import randint, choice
from gameobjects.vector2 import Vector2
class State(object):
	def __init__(self, name):
		self.name = name
	def do_actions(self):
		pass
	def check_conditions(self):
		pass
	def entry_actions(self):
		pass
	def exit_actions(self):
		pass
class StateMachine(object):
	def __init__(self):
		self.states = {}
		self.active_state = None
	def add_state(self, state):
		self.states[state.name] = state
	def think(self):
		if self.active_state is None:
			return
		self.active_state.do_actions()
		new_state_name = self.active_state.check_conditions()
		if new_state_name is not None:
			self.set_state(new_state_name)
	def set_state(self, new_state_name):
		if self.active_state is not None:
			self.active_state.exit_actions()
		self.active_state = self.states[new_state_name]
		self.active_state.entry_actions()
class World(object):
	def __init__(self):
		self.entities = {}
		self.entity_id = 0
		self.background = pygame.surface.Surface(SCREEN_SIZE).convert()
		self.background.fill((255, 255, 255))
		pygame.draw.circle(self.background, (200, 255, 200), NEST_POSITION, int(NEST_SIZE))
	def add_entity(self, entity):
		self.entities[self.entity_id] = entity
		entity.id = self.entity_id
		self.entity_id += 1
	def remove_entity(self, entity):
		del self.entities[entity.id]
	def get(self, entity_id):
		if entity_id in self.entities:
			return self.entities[entity_id]
		else:
			return None
	def process(self, time_passed):
		time_passed_seconds = time_passed / 1000.0
		for entity in self.entities.values():
			entity.process(time_passed_seconds)
	def render(self, surface):
		surface.blit(self.background, (0, 0))
		for entity in self.entities.itervalues():
			entity.render(surface)
	def get_close_entity(self, name, location, range=100.):
		location = Vector2(*location)
		for entity in self.entities.itervalues():
			if entity.name == name:
				distance = location.get_distance_to(entity.location)
				if distance < range:
					return entity
		return None
class GameEntity(object):
	def __init__(self, world, name, image):
		self.world = world
		self.name = name
		self.image = image
		self.location = Vector2(0, 0)
		self.destination = Vector2(0, 0)
		self.speed = 0.
		self.brain = StateMachine()
		self.id = 0
	def render(self, surface):
		x, y = self.location
		w, h = self.image.get_size()
		surface.blit(self.image, (x-w/2, y-h/2))
	def process(self, time_passed):
		self.brain.think()
		if self.speed > 0. and self.location != self.destination:
			vec_to_destination = self.destination - self.location
			distance_to_destination = vec_to_destination.get_length()
			heading = vec_to_destination.get_normalized()
			travel_distance = min(distance_to_destination, time_passed * self.speed)
			self.location += travel_distance * heading
class Leaf(GameEntity):
	def __init__(self, world, image):
		GameEntity.__init__(self, world, "leaf", image)
class Spider(GameEntity):
	def __init__(self, world, image):
		GameEntity.__init__(self, world, "spider", image)
# Make a 'dead' spider image by turning it upside down
		self.dead_image = pygame.transform.flip(image, 0, 1)
		self.health = 25
		self.speed = 50. + randint(-20, 20)
	def bitten(self):
# Spider as been bitten
		self.health -= 1
		if self.health <= 0:
			self.speed = 0.
			self.image = self.dead_image
		self.speed = 140.
	def render(self, surface):
		GameEntity.render(self, surface)
# Draw a health bar
		x, y = self.location
		w, h = self.image.get_size()
		bar_x = x - 12
		bar_y = y + h/2
		surface.fill( (255, 0, 0), (bar_x, bar_y, 25, 4))
		surface.fill( (0, 255, 0), (bar_x, bar_y, self.health, 4))
	def process(self, time_passed):
		x, y = self.location
		if x > SCREEN_SIZE[0] + 2:
			self.world.remove_entity(self)
			return
		GameEntity.process(self, time_passed)
class Ant(GameEntity):
	def __init__(self, world, image):
		GameEntity.__init__(self, world, "ant", image)
# State classes are defined below
		exploring_state = AntStateExploring(self)
		seeking_state = AntStateSeeking(self)
		delivering_state = AntStateDelivering(self)
		hunting_state = AntStateHunting(self)
		self.brain.add_state(exploring_state)
		self.brain.add_state(seeking_state)
		self.brain.add_state(delivering_state)
		self.brain.add_state(hunting_state)
		self.carry_image = None
	def carry(self, image):
		self.carry_image = image
	def drop(self, surface):
		if self.carry_image:
			x, y = self.location
			w, h = self.carry_image.get_size()
			surface.blit(self.carry_image, (x-w, y-h/2))
			self.carry_image = None
	def render(self, surface):
		GameEntity.render(self, surface)
		if self.carry_image:
			x, y = self.location
			w, h = self.carry_image.get_size()
			surface.blit(self.carry_image, (x-w, y-h/2))
class AntStateExploring(State):
	def __init__(self, ant):
		State.__init__(self, "exploring")
		self.ant = ant
	def random_destination(self):
		w, h = SCREEN_SIZE
		self.ant.destination = Vector2(randint(0, w), randint(0, h))
	def do_actions(self):
		if randint(1, 20) == 1:
			self.random_destination()
	def check_conditions(self):
# If ant sees a leaf, go to the seeking state
		leaf = self.ant.world.get_close_entity("leaf", self.ant.location)
		if leaf is not None:
			self.ant.leaf_id = leaf.id
			return "seeking"
# If the ant sees a spider attacking the base, go to hunting state
		spider = self.ant.world.get_close_entity("spider", NEST_POSITION, NEST_SIZE)
		if spider is not None:
			if self.ant.location.get_distance_to(spider.location) < 100.:
				self.ant.spider_id = spider.id
				return "hunting"
		return None
	def entry_actions(self):
		self.ant.speed = 120. + randint(-30, 30)
		self.random_destination()
class AntStateSeeking(State):
	def __init__(self, ant):
		State.__init__(self, "seeking")
		self.ant = ant
		self.leaf_id = None
	def check_conditions(self):
# If the leaf is gone, then go back to exploring
		leaf = self.ant.world.get(self.ant.leaf_id)
		if leaf is None:
			return "exploring"
# If we are next to the leaf, pick it up and deliver it
		if self.ant.location.get_distance_to(leaf.location) < 5.0:
			self.ant.carry(leaf.image)
			self.ant.world.remove_entity(leaf)
			return "delivering"
		return None
	def entry_actions(self):
# Set the destination to the location of the leaf
		leaf = self.ant.world.get(self.ant.leaf_id)
		if leaf is not None:
			self.ant.destination = leaf.location
			self.ant.speed = 160. + randint(-20, 20)
class AntStateDelivering(State):
	def __init__(self, ant):
		State.__init__(self, "delivering")
		self.ant = ant
	def check_conditions(self):
# If inside the nest, randomly drop the object
		if Vector2(*NEST_POSITION).get_distance_to(self.ant.location) < NEST_SIZE:
			if (randint(1, 10) == 1):
				self.ant.drop(self.ant.world.background)
				return "exploring"
		return None
	def entry_actions(self):
# Move to a random point in the nest
		self.ant.speed = 60.
		random_offset = Vector2(randint(-20, 20), randint(-20, 20))
		self.ant.destination = Vector2(*NEST_POSITION) + random_offset
class AntStateHunting(State):
	def __init__(self, ant):
		State.__init__(self, "hunting")
		self.ant = ant
		self.got_kill = False
	def do_actions(self):
		spider = self.ant.world.get(self.ant.spider_id)
		if spider is None:
			return
	self.ant.destination = spider.location
	if self.ant.location.get_distance_to(spider.location) < 15.:
# Give the spider a fighting chance to avoid being killed!
		if randint(1, 5) == 1:
			spider.bitten()
# If the spider is dead, move it back to the nest
			if spider.health <= 0:
				self.ant.carry(spider.image)
				self.ant.world.remove_entity(spider)
				self.got_kill = True
	def check_conditions(self):
		if self.got_kill:
			return "delivering"
		spider = self.ant.world.get(self.ant.spider_id)
# If the spider has been killed then return to exploring state
		if spider is None:
			return "exploring"
# If the spider gets far enough away, return to exploring state
		if spider.location.get_distance_to(NEST_POSITION) > NEST_SIZE * 3:
			return "exploring"
		return None
	def entry_actions(self):
		self.speed = 160. + randint(0, 50)
	def exit_actions(self):
		self.got_kill = False
	def run():
		pygame.init()
		screen = pygame.display.set_mode(SCREEN_SIZE, 0, 32)
		world = World()
		w, h = SCREEN_SIZE
		clock = pygame.time.Clock()
		ant_image = pygame.image.load("ant.png").convert_alpha()
		leaf_image = pygame.image.load("leaf.png").convert_alpha()
		spider_image = pygame.image.load("spider.png").convert_alpha()
		# Add all our ant entities
		for ant_no in xrange(ANT_COUNT):
			ant = Ant(world, ant_image)
			ant.location = Vector2(randint(0, w), randint(0, h))
			ant.brain.set_state("exploring")
			world.add_entity(ant)
		while True:
			for event in pygame.event.get():
				if event.type == QUIT:
					return
			time_passed = clock.tick(30)
			# Add a leaf entity 1 in 20 frames
			if randint(1, 10) == 1:
				leaf = Leaf(world, leaf_image)
				leaf.location = Vector2(randint(0, w), randint(0, h))
				world.add_entity(leaf)
			# Add a spider entity 1 in 100 frames
			if randint(1, 100) == 1:
				spider = Spider(world, spider_image)
				spider.location = Vector2(-50, randint(0, h))
				spider.destination = Vector2(w+50, randint(0, h))
				world.add_entity(spider)
			world.process(time_passed)
			world.render(screen)
			pygame.display.update()
if __name__ == "__main__":
	run()

 

Was This Post Helpful? 0
  • +
  • -

#12 Za_Slanka  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 2
  • Joined: 28-December 09

Re: New to python

Posted 28 December 2009 - 11:49 AM

I need to write the program import csv file in database Python.
Help please.
Was This Post Helpful? 0
  • +
  • -

#13 SpeedisaVirus  Icon User is offline

  • Baller
  • member icon

Reputation: 114
  • View blog
  • Posts: 855
  • Joined: 06-October 08

Re: New to python

Posted 03 January 2010 - 01:46 PM

Better start writing then...
Was This Post Helpful? 0
  • +
  • -

#14 David W  Icon User is offline

  • DIC supporter
  • member icon

Reputation: 281
  • View blog
  • Posts: 1,788
  • Joined: 20-September 08

Re: New to python

Posted 05 January 2010 - 06:36 PM

View PostZa_Slanka, on 28 Dec, 2009 - 10:49 AM, said:

I need to write the program import csv file in database Python.
Help please.


Better to start a new thread with this request ...

And it would be good to supply an example of the data (structure) in the CSV file

Oh yes ... don't forget to show the code you have so far

If you are really lost ... here is a free online Python (version 3.1) tutorial that might help you gain some experience with problem solving and working code.

http://developers-he...sg83.html#msg83
Was This Post Helpful? 0
  • +
  • -

#15 programble  Icon User is offline

  • (cons :dic :head)

Reputation: 49
  • View blog
  • Posts: 1,315
  • Joined: 21-February 09

Re: New to python

Posted 19 January 2010 - 05:11 PM

I think it'd be best to not start trying to write games in pygame right away. Learn python first, then learn pygame.
Was This Post Helpful? 0
  • +
  • -

Page 1 of 1