Sumarizing:

On Wed, Feb 29, 2012 at 1:22 AM, Zack Baker <zbaker1...@gmail.com> wrote:


> blitted correctly i think but i keep getting... KeyError: 4
>

 KeyError: 4

 You're accessing a dictionary with key = 4 and there is no such key in the
dict. See:



>     arrowpos = { 0 : (100,20) , 1:(100,40) , 2:(100,60) , 3 :(100,60) }
>

 arrowpos[0] exists. And also arropos[1], [2] and [3]. But not arrowpos[4].

 So you should never access arrowpos[4], that would raise a KeyError: 4
error.

 And why are you accesing arrowpos[4]? :

 Due to this:

1.- Here you access arrowpos, notice that is via the "counter" variable:


>     menuscreen.blit(arrow,arrowpos[counter])
>

 So, "counter", somewhere can reach the value "4", and it shouldn't.

 Where? Here:


>             if event.key == K_DOWN:
>                 if counter < 4:
>                     counter += 1
>                     menuscreen.blit(arrow,arrowpos[counter])
>
>
if counter < 3:
   counter += 1

When counter is 3, and you press K_DOWN, you increment it from 3 to 4 via
counter+=1.

The right code should be:

   if counter < 3:


 instead of

 if counter < 4:


 This way you only will increase "counter" if it's < 3,

counter = 0 -> counter = 1
counter = 1 -> counter = 2
counter = 2 -> counter = 3
counter = 3 -> IF FAILS -> counter never reaches 4


 I hope the explanation it's clear.

 See you!

-- 
Santiago Romero
Ubuntu GNU/Linux
http://www.sromero.org

Reply via email to