C語言版貪喫蛇:第一部分
概述
這是一篇關於如何用最簡單的C語言知識,編寫出一個控制檯版本的貪喫蛇的教程。
教程只要求最基本的C語言知識:
- 基本的語句,變量,函數。
- 一點點結構體的知識。
- 不需要指針,文件操作等等高級知識。
教程分爲4部分,並且每一個部分都將能夠實現一些功能,然後能夠先運行起來。
最終的程序
一張截圖
需要實現的基本的功能:
- 繪製圍牆
- 繪製蛇,食物
- 實現蛇的運動
- 判斷蛇是否喫到食物,並增長身體
- 判斷是否撞牆,喫到自己
Chapter 1
在這一部分,我們要實現第一個功能
- 繪製圍牆
流程如下:
頭文件
這裏介紹一下幾個不常見的頭文件
1. 生成隨機數需要用到 time.h
2. 移動光標函數在 windows.h
裏面,不同電腦可能有差異
3. 有時候可能程序會閃一下就沒了,這時候需要用到 stdlib.h
裏的一個函數 system("pause");
光標移動函數
示例代碼
//頭文件
#include<windows.h>
void gotoxy(int x,int y)
{
COORD coord={x,y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
}
//使用方法
int main()
{
//將光標移動到(20,2)
gotoxy(20,2);
//打印一個符號
printf("#");
return 0;
}
- 這是Windows.h裏的一個函數,函數有兩個參數x,y,通過這個函數能夠將控制檯裏的光標移動到(x,y)這個位置。
- 座標的起始點在左上角,示意圖如下
繪製圍牆
考慮圍牆的大小
- 這裏我採用的圍牆大小爲 70*20 (即長70,寬20)
- 示意圖如下
- 我們用 # 表示圍牆
利用循環語句和光標移動函數和輸出函數在控制檯上打印出圍牆
- for( );
- gotoxy( );
- printf( )
編寫代碼
- 我們首先測試一下圍牆右下角那個點的位置
void printwall()
{
// chapter 1 繪製圍牆部分
// 圍牆大小 70*20, 長70,寬20
gotoxy(70,20);
printf("#");
}
- 測試能夠在控制檯上正常顯示後再進行完整圍牆的位置
- 用兩個循環語句繪製圍牆
void printwall()
{
// 繪製水平圍牆,
for (int i = 1; i <= 70; i++)
{
gotoxy(i, 1);
printf("#");
gotoxy(i, 20);
printf("#");
}
// 繪製豎直圍牆
for (int i = 1; i <= 20; i++)
{
gotoxy(1, i);
printf("#");
gotoxy(70, i);
printf("#");
}
}
- 效果圖如下
第一部分源碼
附上第一部分完整源代碼,改變gotoxy()的參數,結合循環語句,即可繪製一個簡單的圖像
/*
這裏是貪喫蛇源代碼
chapter 1:
解釋下頭文件:
time.h 生成隨機數要用到
windows.h 要用到裏面的函數 gotoxy
---------
1.畫圍牆
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <windows.h>
// 光標移動函數
void gotoxy(int x, int y)
{
COORD coord = {x, y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
// 繪製圍牆
void printwall()
{
/*
chapter 1 繪製圍牆部分
圍牆大小 70*20, 長70,寬20
*/
// 繪製水平圍牆,
for (int i = 1; i <= 70; i++)
{
gotoxy(i, 1);
printf("#");
gotoxy(i, 20);
printf("#");
}
// 繪製豎直圍牆
for (int i = 1; i <= 20; i++)
{
gotoxy(1, i);
printf("#");
gotoxy(70, i);
printf("#");
}
}
void init()
{
printwall();
}
int main()
{
init(); // 初始化函數,繪製圍牆
system("pause");
return 0;
}