零基礎教做貪喫蛇——(1)準備知識

前言

最近呆在家裏,學STM32學的太自閉了,然後突然從別人手上拿到了一個基於C語言的貪喫蛇的課設,所以閒下來寫這一系列文章,給對這個項目感興趣,卻無從下手的童鞋們參考下。我會講的非常詳細,來方便大家理解,理論上只要學過c語言基礎的童鞋都木的問題!
emmm,,,前提是我講的夠好,,紅火火恍恍惚惚。。。。在這裏插入圖片描述
源碼自取,原版的註釋大多都是英文的而且超級少,,所以我加了點註釋
鏈接:https://pan.baidu.com/s/1eQIGYKTYEQFM5iy3BzgpKg
提取碼:m36y

頁面預覽

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

項目框架

在這裏插入圖片描述
大家可以先大概看下這個圖,心裏大概有個底,這樣寫起程序來纔不會無從下手。

開發準備知識

通過上面這個圖,我們可以大致瞭解到,這次的東西並不怎麼複雜,主要難度都集中在蛇的移動上面。
大家剛學完c語言基礎的童鞋可能現在會有些懵逼了,怎麼才能在用c語言輸入能動的東西欸。以前都沒學過這種東西啊,,,毫無頭緒欸。。。
其實我們遇到的大多數的課設都會用到一些windows提供的API來幫助我們達到更好的效果。所以如大家所想,我們這次就用到了一些這種函數。。。(大家就把他們當成是c的普通函數使用就可以了。。)
下面我把這些函數整理出來,告訴大家怎麼使用的。。

sleep()函數

C語言標準庫中沒有sleep這個函數,它實際上是一個系統API函數。 SLEEP是一種函數,作用是延時。
說白了,就是一個延時函數,括號裏面輸入的是int型變量,延時的單位是毫秒。
使用它之前,要在文件頂部包含windows.h文件。
這樣:

#include <windows.h>

使用樣例:

sleep(500)//就是休眠0.5s

這個函數我們在貪喫蛇中主要用於控制蛇的速度,,大家可以試試用for循環輸出一個數,然後每次循環都sleep下,隨着sleep括號內的數值減少,輸出的東西就看上去越快,嘿嘿嘿。。在這裏插入圖片描述

system()函數

system是一個C語言和C++下的函數。windows操作系統下system () 函數詳解主要是在C語言中的應用,system函數需加頭文件後方可調用。
我們這個項目使用這個函數只幹一件事——清屏
和上一個一樣需要導入windows.h頭文件

system("cls")//效果清屏

至於爲啥子要清屏,嘿嘿,當然是把之前顯示的東西清理掉,實時更新畫面,達到“動態”的效果啦。。

getch()函數

getch()函數使用前也要導入頭文件: conio.h。主要作用從控制檯讀取一個字符,但不顯示在屏幕上。emmm可以理解爲getchar()的升級版吧。。。

goto

emm,,,我也不知道怎麼說他,,功能就是無條件跳轉。應該屬於c語言裏的語法,這裏提下,免主要是怕大家忘記了。

隨機數生成

在遊戲中,食物是要隨機生成的,怎麼隨機生成嘞?其實有這樣的函數,我們只要調用就可以了。
我們使用的下面的模板:
記得包含下time.h的頭文件哦!

srand(time(NULL));//使用時間作爲隨機的種子
food = rand() ;//使用變量food接收

或許大家會有疑問,萬一rand()函數返回的值特別大什麼的,怎麼辦?我們可以使用取餘符號“%”來把它的隨機出來的值進行處理沒從卡在地圖內。這個後面寫到了再詳細解釋叭。。。

定點輸出函數

這個主要用於頂點輸出東西,從而實現可視化的操作,它也是window.h裏面的函數,我們還是一樣套用模板就可以了。

	HANDLE hout;								//Defining handle objects
	COORD cor;									//Defining coordinate objects
	hout = GetStdHandle(STD_OUTPUT_HANDLE);		//Get the handle of the output screen buffer
	cor.X = y;
	cor.Y = x;
	SetConsoleCursorPosition(hout, cor);		//Move Cursor

其中,x,y是窗口中點的座標。

#include<cstdio>
#include<cstring>
#include<iostream>
#include <windows.h>
using namespace std;

int main() {
  for(int i=0;i<5;i++){
    HANDLE hout;								//Defining handle objects
	COORD cor;									//Defining coordinate objects
	hout = GetStdHandle(STD_OUTPUT_HANDLE);		//Get the handle of the output screen buffer
	cor.X = i;
	cor.Y = i;
	SetConsoleCursorPosition(hout, cor);		//Move Cursor
	cout<<"<-此點座標爲 "<<i<<","<<i;
  }
  return 0;
}

效果圖:
在這裏插入圖片描述
大家看代碼可以發現,我沒有使用\n這種換行的代碼,也沒有在開頭空格,它就達到了這種效果。大家可以現在去試試。

關於準備知識就講到這裏,下一章會大致介紹下c語言的結構體的使用,以及怎麼自己寫.h文件,之後就可以開始愉快的寫代碼啦~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章