今天决定写个小程序,再系统地学习PY。跟着个视频写代码,没想到视频中坑点无数,老师讲的也不太详细,不过终于算是搞定了,发出来供初学者节省下时间:
坑一:osx 上安装 python3:由于mac自带了python,不过版本太低,pip也没有,所以要先安装新版,我下载了3.5.6,安装完成。自带的2.7我也没管,万一以后用到呢。
安装就直接安装到/usr/local/bin,这个目录下面了。之前mac自带的,在/usr/bin 这里面。
安装完成之后,其实环境变量你会发现也都自动都配好了。到安装目录下,会看到比如pip3,python3等命令了。
然后就可以执行:pip3 install pygame,实现pygame的安装。
然后,对Pycharm,进行配置,把python3的解释器也给配进去,在Project Interpreter中。
另外,在写.py文件时,import pygame还是会报错,因此还要做个修改:
第一步:打开Pycharm
第二步:点File ->Default Settings->Project Interpreter
双击pip,然后搜索pygame,再install,看到成功,则环境这一块,就算切换完成了。。。
----------------------------------------分隔线----------------------------------------
至于代码,我都写在注释里,就不解释了。
import pygame from pygame.locals import * import time def main(): #可以自动初始化 pygame.init(); screen = pygame.display.set_mode((480,852),0,32) background = pygame.image.load("./feiji/background.png") plane = pygame.image.load("./feiji/hero1.png") x = 480 / 2 - 50; y = 600; speed = 10 #设置飞机的位置 list =[] while 1: screen.blit(background, (0, 0)) screen.blit(plane, (x, y)) #如果不判断event,则不会显示出画面 #检查是否有新事件,如果有的话,否则转到退出命令,退出程序。 for event in pygame.event.get(): if event.type == pygame.QUIT: # 解析器关闭时会自动调用quit pygame.quit() exit(0) key_pressed = pygame.key.get_pressed() if key_pressed[K_UP]: if(y - speed >=0): y = y - speed; if key_pressed[K_DOWN]: if(y + speed <=852-100): y = y + speed; if key_pressed[K_LEFT]: if(x - speed >= 0): x = x - speed; if key_pressed[K_RIGHT]: if(x + speed <= 480-100): x = x + speed; if key_pressed[K_SPACE]: print("发射子弹") #子弹的详细信息 bullet = pygame.image.load("./feiji/bullet.png"); my_bullet = {"子弹":bullet,"x坐标":x+50,"y坐标":y}; list.append(my_bullet) for i in list: screen.blit(i["子弹"],(i["x坐标"],i["y坐标"])) i["y坐标"] = i["y坐标"] -25; #0.01秒唤醒一次 time.sleep(0.01) pygame.display.update(); main();
以上当中,最奇怪的地方,就是如果不加事件判断,那么会看不到图像,只有在停止运行时,图片才会一闪而过。我也没太想明白问题出在哪里,总之加上对event的判断,就没问题了。
最终的结果: