0%

基于C的文件操作
  在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。

一、流式文件操作
这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h中定义如下:

复制代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
typedef struct { 

  int level;           /* fill/empty level of buffer */

  unsigned flags;        /* File status flags */

  char fd;            /* File descriptor */

  unsigned char hold;     /* Ungetc char if no buffer */

  int bsize;           /* Buffer size */

  unsigned char _FAR *buffer; /* Data transfer buffer */

  unsigned char _FAR *curp;  /* Current active pointer */

  unsigned istemp;      /* Temporary file indicator */

  short token;         /* Used for validity checking */

} FILE;             /* This is the FILE object */

复制代码

  FILE这个结构包含了文件操作的基本属性,对文件的操作都要通过这个结构的指针来进行,此种文件操作常用的函数见下表 函数 功能

阅读全文 »

游戏框架搭建

目标 —— 使用 面相对象 设计 飞机大战游戏类

目标

  • 明确主程序职责
  • 实现主程序类
  • 准备游戏精灵组

01. 明确主程序职责

  • 回顾 快速入门案例,一个游戏主程序的 职责 可以分为两个部分:
    • 游戏初始化
    • 游戏循环
  • 根据明确的职责,设计 PlaneGame 类如下:
阅读全文 »

游戏背景

目标

  • 背景交替滚动的思路确定
  • 显示游戏背景

01. 背景交替滚动的思路确定

运行 备课代码观察 背景图像的显示效果:

  • 游戏启动后,背景图像连续不断地 向下方 移动
  • 视觉上 产生英雄的飞机不断向上方飞行的 错觉 —— 在很多跑酷类游戏中常用的套路
    • 游戏的背景 不断变化
    • 游戏的主角 位置保持不变
阅读全文 »

英雄登场

目标

  • 设计 英雄子弹
  • 使用 pygame.key.get_pressed() 移动英雄
  • 发射子弹

01. 设计 英雄子弹

英雄需求

  1. 游戏启动后,英雄 出现在屏幕的 水平中间 位置,距离 屏幕底部 120 像素
  2. 英雄 每隔 0.5 秒发射一次子弹,每次 连发三枚子弹
阅读全文 »

项目实战 —— 飞机大战

目标

  • 强化 面向对象 程序设计
  • 体验使用 pygame 模块进行 游戏开发

实战步骤

  1. pygame 快速体验
  2. 飞机大战 实战
阅读全文 »