使用教材:C语言课程设计与游戏开发实践
一、实验目的
- 熟悉实验环境VC++(或Dev C++);
- 熟悉console的输入和输出;
- 通过游戏的需求,进一步掌握数组的使用。
二、实验环境
DEV C++/VC++
三、实验记录
实验思路:以实验教材P87至P91页的代码为基础,加入计分功能,计命功能,变速功能,游戏成功和失败出口,规则和选择蛇型的输入界面,道具,复活和暂停等功能。
实验过程:由于一开始思路比较正确且有上次实验经验,问题都能得到较好解决。但由于缺乏如加入断点等调试经验,导致浪费较多时间。
实验结果:代码量248行,分为front() startup() show() move() updateWithInput() back() 6个模块,基本实现上述功能。
实验的代码和注释:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#define H 24 //画面尺寸
#define w 79
int dire; // 小蛇移动位置,上下左右分别用1,2,3,4表示
int f_x, f_y; // 食物F
int S_x, S_y; // 道具S
int canvas[H][w] = {
0 };//数组画布
int a; //用户输入变量
int life = 3, score = 0;
void gotoxy(int x, int y)
{
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition(handle, pos);
}
void front()
{
printf("规则:1、游戏界面中,通过'W''A''S''D'操纵蛇移动,'p'键暂停,'ESC'键退出。\n");
printf(" 2、游戏过程中,用户通过吞食道具和食物得分,生命=3,初始分数=4,食物'F'分数+1,道具'S’生命-1且分数-20。\n");
printf(" 3、游戏过程中,误食道具“S”,碰墙和咬自己的尾巴生命-1,当生命=0时游戏结束,分数=100时游戏通关。\n");
printf(" 4、游戏过程中,分数到达一定程度后,蛇的速度会发生变化。\n");
printf(" 蛇的样式1,@**************\n");
printf(" 蛇的样式2,@$$$$$$$$$$$$$$\n");
printf(" 蛇的样式3,@&&&&&&&&&&&&&&\n");
printf("了解规则后,将输入法切换成英文,输入数字1到3选择蛇的样式,按下回车,游戏开始。\n");
begin:scanf("%d", &a);
if (a < 1 || a>3) {
//检测非法输录
printf("非法输入,清正确输入\n");
goto begin;
}
system("cls");
}
void startup() // 初始化数据
{
int i, j;
for (i = 0; i < H; i++)
{
canvas[i][0] = -1;
canvas[i][w - 1] = -1;
}
for (j = 0; j < w; j++