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.
New to python
Page 1 of 114 Replies - 2846 Views - Last Post: 19 January 2010 - 05:11 PM
Replies To: New to python
#2
Re: New to python
Posted 11 November 2009 - 03:54 PM
Dive Into Python is a pretty good introduction to Python.
#3
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!
As a beginner, I actually found this rather confusing. But that's up to you.
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!
girasquid, 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.
#4
Re: New to python
Posted 11 November 2009 - 03:57 PM
Thanks. will check them out now.
#6
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.
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.
#7
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.
Quote
Of course, part of that might be because it's so different from other languages I know.
#9
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.
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
#10
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))
[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))
#11
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()
#12
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.
Help please.
#14
Re: New to python
Posted 05 January 2010 - 06:36 PM
Za_Slanka, on 28 Dec, 2009 - 10:49 AM, said:
I need to write the program import csv file in database Python.
Help please.
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
#15
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.
Page 1 of 1