zoukankan      html  css  js  c++  java
  • 写简单游戏,学编程语言-python篇

      好吧, 首先得承认这个题目写的夸大了,人才菜鸟一枚,游戏相关编程也是知道点概念。但是本人对游戏开发比较感兴趣,相信大多数喜欢玩玩游戏,因为它给人确实带来很多乐趣,而编程语言的学习最少对于我来说比较乏味了,所以学一门新语言我一般找点小东西实践一下来增加点学习的动力。今天偶然看到一本书确实值得推荐,介绍python入门和pygame的不错的外文书籍。传送门在此:http://cs.simpson.edu/files/CS_Intro_Book.pdf

      这里推荐这本入门书,因为它反复穿插了python基本语法和pygame的示例学习,我觉得这种文章组织形式确实比一般的入门介绍书籍更容易接受(对于本人来说的确如此,不知不觉1小时看了三分之一了)。做个最简单的小游戏不仅熟悉了python语法而且学到了游戏编程中的简单的图形学的只是,对于游戏开发的基础掌握还是很有帮助滴。有人可能会问到了,又引入pygame这个新框架是不是又要花大时间去熟悉它呢,其实根本不需要,因为这个框架是比较简单和易懂的 ,只需要查几个常用的接口函数和方法就能轻松写一个简单的游戏demo了,当然有其他游戏引擎知识的话,更不在话下了。其实这本书主要适合对象还是python学习的入门者,通过比较有趣的例子不仅学到了python语法而且锻炼了 游戏逻辑的实现和图形开发的基础知识,在此基础上你也可以改进示例,丰富游戏的内容了。以一个简单的示例介绍一下吧,默写书中一个最简单动画入门的例子(雪花飘落)如下:

      

     1 import pygame
     2 pygame.init()
     3 width, height = 640, 640
     4 green=[0,255,0]
     5 import random
     6 screen=pygame.display.set_mode((width, height))
     7 done=False
     8 pos_x=20
     9 start_list=[]
    10 clock=pygame.time.Clock()
    11 for i in range(50):
    12     x=random.randrange(0,640)
    13     y=random.randrange(0,640)
    14     start_list.append([x,y])
    15 while done == False:    
    16     screen.fill([0,0,0])
    17     for event in pygame.event.get():
    18         # check if the event is the X button 
    19         if event.type==pygame.QUIT:
    20             # if it is quit the game
    21             done = True
    22     for i in range(len(start_list)):           
    23         pygame.draw.circle(screen,green,start_list[i],2)
    24         start_list[i][1]+=1
    25         if start_list[i][1]>640:
    26             y=random.randrange(-50,-10)
    27             start_list[i][1]=y
    28             x=random.randrange(0,640)
    29             start_list[i][0]=x
    30     clock.tick(20)
    31     pygame.display.flip()
    32     pos_x+=10
    33     if pos_x is 180:
    34         pos_x=20
    35 pygame.quit() 
    36 exit(0)

     我这里用green来画圆形的精灵,貌似不是雪花飘落了,应该改成叶子形状,变成绿叶坠落才比较适合吧。。哈。。:)

    代码写的没啥技术含量,不过我觉得这本书带来的启示还是挺有用的,边学新语言边实现你喜欢的东西才是编程的乐趣所在吧,这也是本人记录随笔的初衷。文笔粗糙的很,继续加油吧!

  • 相关阅读:
    Redis——发布/订阅
    Redis——任务队列
    GOF设计模式——Builder模式
    GOF设计模式——Prototype模式
    GOF设计模式——Singleton模式
    shell 脚本中的数学计算表达
    shell $'somestring'
    shell if-elif-elif-fi
    vim 使用
    疑问:为什么要使用href=”javascript:void(0);”?
  • 原文地址:https://www.cnblogs.com/lophy/p/3502342.html
Copyright © 2011-2022 走看看