古往今来,民间流传着头发的种种说法。其中流传最广的,莫过于把头发赠送给自己暗恋的对象,或者情侣之间互相赠送,表达心中的爱恋。在相当长的历史时期,头发都是定情信物之一。而在我市的一些乡村小镇,人们认为头发还有另外两个特别的功用,便是“驱蛇”、“辟邪”。首先说说头发“驱蛇”之效。据我市一些老人家说,炎热的夏天,在老房子、涵洞等等地方会有水蛇出没,但是过去贫苦的人们买不起药物,这时,只需要把剪断的头发拿到这些地方,打一把火把烧着头发,蛇闻到头发的焦味儿,就不敢前往了。现在,在我市的一些乡村,人们仍然用这种方法对付蛇。今日看来,这个做法可能和头发的金属含量有一定关系。众所周知,头发颜色常见的有黑色、金**、棕色及红色等,当人类老化时,头发通常会变成银白色。头发的主要成份是角质蛋白,约占97%。而角质蛋白是由氨基酸所组成。据了解,不同颜色的头发所含的金属元素不同。黑发含有等量的铜、铁和黑色素,当镍的含量增多时,就会变成灰白色。金**头发含有钛,红褐色头发含有钼,红棕色的除含铜、铁之外,还有钴,绿色头发则是含有过多的铜。头发里的铜、铁、钴、镍等金属元素经过燃烧,会发出一种特别的气味,烧发驱蛇,也和金属元素燃烧后的气味有一定关系。今天,每逢夏天夜暮时分,我市乡镇还有部分老人家会把头发卷起来,拿到旧房子、涵洞入出口等地方燃烧驱蛇。其次,在我市东源县部分乡镇,一些老人家认为头发还有辟邪压惊之功用。当家中小孩感冒、发烧,身体不适或者受到惊吓时,老人家会拿出一根黑色的绳子,取下小孩妈妈的三根头发缠绕在绳子上,然后戴在生病的人手上。目前仍有一小部分人会这样做。东源县黄村的蓝女士说,她的儿子现在身体不适,家婆正在用这种办法治疗。“我家婆说,缠了头发的绳子戴在手上后,是不可以轻易取下来的。如果要弄下来,也不能用剪刀剪,否则小孩的魂魄就会飞走。”蓝女士说,“虽知是迷信,我也不相信,但为了小孩子好,也只能随老人家了。”除了驱蛇和辟邪,古时候,有许多情侣还有赠送头发的习惯。其中,主要的原因无外乎是古人对头发的看重。古人轻易不会把头发赠送给人,他们认为“身体发肤,受之父母”,是人体重要的组成部分,自婴儿出生就伴随着每个人,是皮肤的附属品,如果不珍惜头发和皮肤,便等于不孝敬父母;此外,古人常言“结发夫妻”,也是缘于这个原因,未婚女子赠送头发给男性,意思就是要以身相许、终身相托,表达一种信任和依附,说明她对男子感情很深,是很重的承诺;已婚女人送夫君秀发,大多是两人离别之际,赠之使他借物思情、永不相忘。在今天,人们赠送头发的习惯已经少之又少了。
struct SHE Link(struct SHE head)
{
struct SHE p, pr;
pr = head;//指针指向链的头head
p = (struct SHE )malloc(sizeof(struct SHE));//申请内存,创建新的节点
if (p == NULL) { printf("发生错误!!!"); exit(0); }
if (head == NULL) { head = p; }//如果链是空的,新节点就是链的头
else
{
while (pr -> next != NULL)
{ pr = pr -> next; }//循环语句,将指针pr移到链的末尾
pr -> next = p;//新节点加到链的末尾
}
p -> x = Tx;//给新节点赋值,Tx,Ty未定义,应该是全局变量,否则应该作为参数传递进来
p -> y = Ty;
p -> next = NULL;//p->next 指向下一个元素,就相当于下一个元素的指针,指向空值,表示是尾。
return head;//这个其实多余,因为head是指针参数,能够直接改变内容;但是与函数定义还是一致的。
}
// head表示头结点
贪吃蛇程序:
GreedSnakejava (也是程序入口):
import javaawtBorderLayout;
import javaawtCanvas;
import javaawtColor;
import javaawtContainer;
import javaawtGraphics;
import javaawteventKeyEvent;
import javaawteventKeyListener;
import javautilIterator;
import javautilLinkedList;
import javaxswingJFrame;
import javaxswingJLabel;
import javaxswingJPanel;
public class GreedSnake implements KeyListener {
JFrame mainFrame;
Canvas paintCanvas;
JLabel labelScore;// 计分牌
SnakeModel snakeModel = null;// 蛇
public static final int canvasWidth = 200;
public static final int canvasHeight = 300;
public static final int nodeWidth = 10;
public static final int nodeHeight = 10;
// ----------------------------------------------------------------------
// GreedSnake():初始化游戏界面
// ----------------------------------------------------------------------
public GreedSnake() {
// 设置界面元素
mainFrame = new JFrame("GreedSnake");
Container cp = mainFramegetContentPane();
labelScore = new JLabel("Score:");
cpadd(labelScore, BorderLayoutNORTH);
paintCanvas = new Canvas();
paintCanvassetSize(canvasWidth + 1, canvasHeight + 1);
paintCanvasaddKeyListener(this);
cpadd(paintCanvas, BorderLayoutCENTER);
JPanel panelButtom = new JPanel();
panelButtomsetLayout(new BorderLayout());
JLabel labelHelp;// 帮助信息
labelHelp = new JLabel("PageUp, PageDown for speed;", JLabelCENTER);
panelButtomadd(labelHelp, BorderLayoutNORTH);
labelHelp = new JLabel("ENTER or R or S for start;", JLabelCENTER);
panelButtomadd(labelHelp, BorderLayoutCENTER);
labelHelp = new JLabel("SPACE or P for pause", JLabelCENTER);
panelButtomadd(labelHelp, BorderLayoutSOUTH);
cpadd(panelButtom, BorderLayoutSOUTH);
mainFrameaddKeyListener(this);
mainFramepack();
mainFramesetResizable(false);
mainFramesetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);
mainFramesetVisible(true);
begin();
}
// ----------------------------------------------------------------------
// keyPressed():按键检测
// ----------------------------------------------------------------------
public void keyPressed(KeyEvent e) {
int keyCode = egetKeyCode();
if (snakeModelrunning)
switch (keyCode) {
case KeyEventVK_UP:
snakeModelchangeDirection(SnakeModelUP);
break;
case KeyEventVK_DOWN:
snakeModelchangeDirection(SnakeModelDOWN);
break;
case KeyEventVK_LEFT:
snakeModelchangeDirection(SnakeModelLEFT);
break;
case KeyEventVK_RIGHT:
snakeModelchangeDirection(SnakeModelRIGHT);
break;
case KeyEventVK_ADD:
case KeyEventVK_PAGE_UP:
snakeModelspeedUp();// 加速
break;
case KeyEventVK_SUBTRACT:
case KeyEventVK_PAGE_DOWN:
snakeModelspeedDown();// 减速
break;
case KeyEventVK_SPACE:
case KeyEventVK_P:
snakeModelchangePauseState();// 暂停或继续
break;
default:
}
// 重新开始
if (keyCode == KeyEventVK_R || keyCode == KeyEventVK_S
|| keyCode == KeyEventVK_ENTER) {
snakeModelrunning = false;
begin();
}
}
// ----------------------------------------------------------------------
// keyReleased():空函数
// ----------------------------------------------------------------------
public void keyReleased(KeyEvent e) {
}
// ----------------------------------------------------------------------
// keyTyped():空函数
// ----------------------------------------------------------------------
public void keyTyped(KeyEvent e) {
}
// ----------------------------------------------------------------------
// repaint():绘制游戏界面(包括蛇和食物)
// ----------------------------------------------------------------------
void repaint() {
Graphics g = paintCanvasgetGraphics();
// draw background
gsetColor(ColorWHITE);
gfillRect(0, 0, canvasWidth, canvasHeight);
// draw the snake
gsetColor(ColorBLACK);
LinkedList na = snakeModelnodeArray;
Iterator it = naiterator();
while (ithasNext()) {
Node n = (Node) itnext();
drawNode(g, n);
}
// draw the food
gsetColor(ColorRED);
Node n = snakeModelfood;
drawNode(g, n);
updateScore();
}
// ----------------------------------------------------------------------
// drawNode():绘画某一结点(蛇身或食物)
// ----------------------------------------------------------------------
private void drawNode(Graphics g, Node n) {
gfillRect(nx nodeWidth, ny nodeHeight, nodeWidth - 1,
nodeHeight - 1);
}
// ----------------------------------------------------------------------
// updateScore():改变计分牌
// ----------------------------------------------------------------------
public void updateScore() {
String s = "Score: " + snakeModelscore;
labelScoresetText(s);
}
// ----------------------------------------------------------------------
// begin():游戏开始,放置贪吃蛇
// ----------------------------------------------------------------------
void begin() {
if (snakeModel == null || !snakeModelrunning) {
snakeModel = new SnakeModel(this, canvasWidth / nodeWidth,
thiscanvasHeight / nodeHeight);
(new Thread(snakeModel))start();
}
}
// ----------------------------------------------------------------------
// main():主函数
// ----------------------------------------------------------------------
public static void main(String[] args) {
GreedSnake gs = new GreedSnake();
}
}
Nodejava:
public class Node {
int x;
int y;
Node(int x, int y) {
thisx = x;
thisy = y;
}
}
SnakeModeljava:
import javautilArrays;
import javautilLinkedList;
import javautilRandom;
import javaxswingJOptionPane;
public class SnakeModel implements Runnable {
GreedSnake gs;
boolean[][] matrix;// 界面数据保存在数组里
LinkedList nodeArray = new LinkedList();
Node food;
int maxX;// 最大宽度
int maxY;// 最大长度
int direction = 2;// 方向
boolean running = false;
int timeInterval = 200;// 间隔时间(速度)
double speedChangeRate = 075;// 速度改变程度
boolean paused = false;// 游戏状态
int score = 0;
int countMove = 0;
// UP和DOWN是偶数,RIGHT和LEFT是奇数
public static final int UP = 2;
public static final int DOWN = 4;
public static final int LEFT = 1;
public static final int RIGHT = 3;
// ----------------------------------------------------------------------
// GreedModel():初始化界面
// ----------------------------------------------------------------------
public SnakeModel(GreedSnake gs, int maxX, int maxY) {
thisgs = gs;
thismaxX = maxX;
thismaxY = maxY;
matrix = new boolean[maxX][];
for (int i = 0; i < maxX; ++i) {
matrix[i] = new boolean[maxY];
Arraysfill(matrix[i], false);// 没有蛇和食物的地区置false
}
// 初始化贪吃蛇
int initArrayLength = maxX > 20 10 : maxX / 2;
for (int i = 0; i < initArrayLength; ++i) {
int x = maxX / 2 + i;
int y = maxY / 2;
nodeArrayaddLast(new Node(x, y));
matrix[x][y] = true;// 蛇身处置true
}
food = createFood();
matrix[foodx][foody] = true;// 食物处置true
}
// ----------------------------------------------------------------------
// changeDirection():改变运动方向
// ----------------------------------------------------------------------
public void changeDirection(int newDirection) {
if (direction % 2 != newDirection % 2)// 避免冲突
{
direction = newDirection;
}
}
// ----------------------------------------------------------------------
// moveOn():贪吃蛇运动函数
// ----------------------------------------------------------------------
public boolean moveOn() {
Node n = (Node) nodeArraygetFirst();
int x = nx;
int y = ny;
switch (direction) {
case UP:
y--;
break;
case DOWN:
y++;
break;
case LEFT:
x--;
break;
case RIGHT:
x++;
break;
}
if ((0 <= x && x < maxX) && (0 <= y && y < maxY)) {
if (matrix[x][y])// 吃到食物或者撞到身体
{
if (x == foodx && y == foody)// 吃到食物
{
nodeArrayaddFirst(food);// 在头部加上一结点
// 计分规则与移动长度和速度有关
int scoreGet = (10000 - 200 countMove) / timeInterval;
score += scoreGet > 0 scoreGet : 10;
countMove = 0;
food = createFood();
matrix[foodx][foody] = true;
return true;
} else
return false;// 撞到身体
} else// 什么都没有碰到
{
nodeArrayaddFirst(new Node(x, y));// 加上头部
matrix[x][y] = true;
n = (Node) nodeArrayremoveLast();// 去掉尾部
matrix[nx][ny] = false;
countMove++;
return true;
}
}
return false;// 越界(撞到墙壁)
}
// ----------------------------------------------------------------------
// run():贪吃蛇运动线程
// ----------------------------------------------------------------------
public void run() {
running = true;
while (running) {
try {
Threadsleep(timeInterval);
} catch (Exception e) {
break;
}
if (!paused) {
if (moveOn())// 未结束
{
gsrepaint();
} else// 游戏结束
{
JOptionPaneshowMessageDialog(null, "GAME OVER",
"Game Over", JOptionPaneINFORMATION_MESSAGE);
break;
}
}
}
running = false;
}
// ----------------------------------------------------------------------
// createFood():生成食物及放置地点
// ----------------------------------------------------------------------
private Node createFood() {
int x = 0;
int y = 0;
do {
Random r = new Random();
x = rnextInt(maxX);
y = rnextInt(maxY);
} while (matrix[x][y]);
return new Node(x, y);
}
// ----------------------------------------------------------------------
// speedUp():加快蛇运动速度
// ----------------------------------------------------------------------
public void speedUp() {
timeInterval = speedChangeRate;
}
// ----------------------------------------------------------------------
// speedDown():放慢蛇运动速度
// ----------------------------------------------------------------------
public void speedDown() {
timeInterval /= speedChangeRate;
}
// ----------------------------------------------------------------------
// changePauseState(): 改变游戏状态(暂停或继续)
// ----------------------------------------------------------------------
public void changePauseState() {
paused = !paused;
}
}
21程序功能
贪吃蛇游戏是一个经典的游戏,在一个封闭的城墙,城墙的一个随机的食物,四个光标通过按下键盘上的按键来控制蛇向上和向下移动大约四蛇,蛇头撞倒的食物,那么食物是吃了一条蛇,体长和10点,其次是食品,等待,如果蛇吃蛇打在了墙上,他的身体在移动中或物理交蛇头打游戏结束。
22整体设计程序描述
在开始的一场比赛中,运行一些,最终的部分(部分其实已经开始运行部分之一)。
设计思路是程序的图形表示蛇和蛇移动的关键。有了一个小矩形的蛇体,身体的每一个长度,添加一个矩形块,有两个走私者表示。必须移动从蛇,蛇不能移动在相反的方向,即不转换蛇尾巴。如果你不按任何键,蛇对自己向前移动这个方向发展,当玩家按下箭头键来有效地向指定方向的蛇后,在身体移动一步,所以当你按下箭头键有效后,先确定蛇的位置,然后移动蛇体与走私者,实现图形是从走私者一个新的位置开始来画一条蛇,然后平因为没有理由庆祝,在原来的位置的蛇和蛇的位置差一个新的单位,因此,它看起来像超过一个社会机构,因此将持续背景颜色覆盖着蛇。的出现和消失的食物也画矩形块和覆盖的矩形块
222数据结构设计和使用说明
开始:
游戏是在图形模式下运行,所以第一步必须初始化图形模式,然后开始有一个接口,像一本书的封面,我设置了一个游戏的标题画面中,除了游戏标题画面,我还设置了一个欢迎屏幕。标题画面后,也为游戏运行部分的初始化,包括绘图游戏在后台运行,游戏中的一些重要的变量初始化。
运行部分:
这里的游戏的核心部分,包括更多的功能,也就是说,模块,让我先模拟蛇的游戏模式:一条蛇突然出现在世界很短,它的运动神经异常,不能停在自己的世界多动症的唯一的食物,它是饿极了,很贪心;此外,在不明原因的情况下,美食天堂,可惜没有倒下口;饥饿的英雄,无论其没有毒性,不问食品的起源,直线攀升的食物,吃食物的事情,它是超出想象的同化能力,使食物迅速成为了他身体的一部分,它的机身变得更长的朋友。当它是第一个吃的食物,神不得不给它第二次的明星,所以它吃了第二块硬盘,所以他变得更长,所以有第三颗卫星其机身也有所加长,不会不管他长身体的麻烦 - 转身不便,继续吃,现在是直接向巴勒斯坦王后,使食品有一个绿色通道。但是有一天的下午,它咬其本身而言,它被人记住,他是一条蛇,然后晕倒了(不是中毒),或收取你的食物,当它失去控制,撞到墙上。
第一旋转:第一,食物,二,蛇不停地移动,第三步是检查蛇打自己或墙壁,加紧从第四场比赛有两个分支(A,B):
>:第四步,蛇并没有触摸自己或墙壁,蛇去提前和画蛇的运动;第五步,以确定是否蛇到吃的食物,如果蛇到吃的食物,身体变得很长,在原始食物消失;第六步骤中,播放器输入的控制命令,使蛇第七步骤中,第二次迭代的步骤,重复该步骤,在循环的下一次迭代改变的方向移动的第二步骤;第一轮;
B:第四步,蛇会见他或墙壁,终止比赛。
最后一节:
结束游戏节目“GAME OVER”,已经是该公约的法律,我的游戏也不例外。除了游戏结束画面,我还设置了游戏退出画面,“善始善终”。
有了上面的大致划分,我把整个程序分为(13 +2)模块(事实上,功能)
223程序结构(流程图)
图21
根据需要处理与任务要求,规划,输入数据和输出结果,以确定用于存储数据的数据结构。
体现在C语言的数据结构的数据类型,从而使C语言编程,应统筹规划过程中使用的变量,数组,指针等,以及它们的类型。这一点是非常重要的,如果在此期间的变量或数组选择不合适的未来将是非常困难的,要。现在
蛇游戏元素进行分析,然后与它们对应的在程序中描述:
蛇:
说明:长度,颜色,位置。
与数据类型:长度对应的数据 - 尽管可以使用坐标,但是这样的话,大的计算量,因此转换成较大的单位 - 的部分的数目,一个固定长度的描述每个 - 整数部分;坐标;颜色 - 整数位置 - X,Y坐标。
额外的描述:蛇的运动方向,蛇的生活。 />与数据类型相应的数据:这些描述和程序的键输入部接触的部分游戏结束判断的词语。方向只有四个方向:向上和向下。您可以设置相应的四个整数:3,4,2,1。生命只有两种情况:或生,对应为0或1。
食物:
说明:颜色,位置。
相应的数据的数据类型:颜色设置固定的,因此不会进行讨论。位置的X,Y坐标。
附加说明:食物的存在。
相应的数据类型的数据:这是为了避免重复的食物和设置,和绘图功能食品接触。只有两个值:0或1(没有食物或食品)/>其他元素:墙壁,因为它是在显示屏上作为背景的存在,并且没有描述实际壁是由四条直线边界,由坐标所述。
变量:键盘输入键(整数)作为一个全局变量,还需要常常要使用循环变量,自定义填充图案;解释性文本字符数组,游戏得分,游戏速度(蛇速度)。
图22蛇不停地移动密钥算法流程图
224每个模块的功能和主要模块的程序描述
思想和算法实现的流程图说明:
键 - 蛇不停地移动Snakemove():
不断移动的蛇是一条蛇在下一节取代的是一条蛇的位置坐标下一节之前,一个在电脑前一个位置成为位置坐标。在上面的位置坐标的蛇已经被定义为数组类型,一组对应的位置坐标,假设有i +1的节日,从0到我,§我的第一部分的坐标的i-1的第坐标,第一坐标系的第i-1的i-2的部分的第一坐标,直到第一个 0拍摄的第一个坐标。坐标,即第0,走私者的坐标去某一个方向变化,改变蛇每节的长度。这蛇坐标旋转环,它需要继续。
225程序结果
运行程序得到下面的初始界面图:
图23程序结果图
蛇用一个小矩形代表一节的身体,体长各一,添加一个矩形块,有两个走私者表示:
图24程序结果图
蛇不触及自己或墙壁,蛇继续向前:
图25程序结果图
游戏结束时,显示“GAME OVER”
图26程序结果图<BR /
23程序的源代码和注释定义N 200
#包括
#包括
#包括
#定义LEFT 0x4b00
#定义RIGHT 0x4d00
#定义DOWN 0x5000处
#定义多达0x4800
#定义ESC 0x011b
INT I,关键; 诠释得分= 0 ;/ 得分 /
诚信部gamespeed了= 50000 ;/ 游戏速度自己调整 /
食品
{
诠释x ;/ 食品横坐标 /
诠释y ;/ 食品纵坐标 / 诠释;/ 确定是否一个变量的食物出现 /
}食品;/ 食物结构 /
蛇
{
诠释x [N];
诠释y [N];
节点;/ 节数蛇/
>方向;/ 蛇移动方向 /
生活;/ 蛇的生命,0活着,亡 /
}蛇;
无效的init(无效);/ 图形驱动程序 /
关闭无效(无效);/ 图形结束 /的
无效DrawK(无效);/ 启动画面 /
无效GAMEOVER(无效);/ 游戏结束 /
无效的游戏(空);/ 玩游戏具体过程 /的
无效PrScore(无效);/ 输出结果 /
/ 主函数 /
>无效的主要(无效)
{
的init();/ 图形驱动程序 /
DrawK();/ 启动画面 /
游戏();/ 播放游戏具体过程 /
关闭();/ 图形结束 /
}
/ 图形驱动程序 /
无效的init(无效)
{ GD =检测,通用;
registerbgidriver(EGAVGA_driver);
initgraph(&GD,GM,“C:\ \ Program Files文件\ \ winyes \ \ tc20h \ \ BGI”); BR /> cleardevice();
}
/ 开始屏幕上的左上角坐标为(50,40),右下角坐标(610460)的墙上 /
无效DrawK (无效)
{
/ SetBkColor来“绘制”(浅绿); /
的setColor(11);
setlinestyle(SOLID_LINE THICK_WIDTH,0);/ 行 /
(I = 50; <= 600; + = 10)/ 画墙壁 /
{矩形(我40,我+10,49); / 顶 /
矩形(I,451,10460);/ 底部 /
}
(I = 40; <= 450; + = 10) {
矩形(50,我59岁,我10); / 左 /
矩形(601,我610,我+10);/ 右 /
>}
}
/ 玩游戏具体过程 /
无效(无效)游戏
{
随机();/ 随机数发生器 / BR /> foodyes = 1 ;/ 1表示需要出现新的食物,食物0意味着已经存在 /
snakelife = 0 ;/ 活着 /
蛇。方向= 1 ;/ 正确的方向 /
snakex [0] = 100; snakey [0] = 100 ;/ 蛇头 /
snakex [1] = 110; snakey [1] = 100;
snakenode = 2 ;/ 会话 /
PrScore();/ 输出得分 /
(1)/ 可以重复玩游戏,按ESC键退出 /
{
(kbhit())/ 移动自己的身体 /
{
如果没有密钥的情况下,蛇(食物。== 1)/ 需要一个新的食物 /
{
foodx的rand()%400 +60;,
foody = rand()的350%+ 60;
同时(foodx%10!= 0)/ 随机食品,必须让食物到整个车厢,这样就可以让蛇吃 /
foodx + +;
而(10%foody!= 0)
foody + +;
foodyes的= 0 ;/ 食品在屏幕上 /
} (foodyes == 0)/ 把食物会显示在屏幕上 /
{
的setColor(绿色);
的矩形(foodx foody ,foody-10 foodx +10);}
(I = snakenode-1> 0; - )/ 蛇前进的每一个环节,那就是蛇密钥算法 /
{
snakex [I] = snakex [I-1];
snakey [I] = snakey [I-1]
}
/ 1,2,3,4右,左,中,由法官跌四个方向移动的蛇 /
开关(snakedirection) {
案例1:snakex [0] + = 10;打破;
案例2:snakex [0] - = 10;打破;
案例3:蛇。 Y [0] - = 10;打破;
案例4:snakey [0] + = 10;打破;
}
(I = 3; <蛇节点; + +)/ 从蛇第四季度开始打自己的判断,因为两个走私,不可能改过第三季度的 /
{
(snakex [I] == snakex [0] && snakey [I] == snakey [0])
{
GAMEOVER();/ 显示失败 /
蛇的。生活= 1;
打破;
}
}
(snakex [0] 595 | |蛇。Y 0] <55 | |
snakey [0]> 455)/ 如果蛇打在墙上 /
{
GAMEOVER();/ 游戏结束 / BR /> snakelife = 1; / 蛇 /
}
如果(snakelife == 1)/ 这两个判断未来,如果蛇亡内环并重新开始 /
打破;
(snakex [0] == foodx && snakey [0] == foody)/ 吃的食物后 / BR /> {
的setColor(0);/ 把屏幕上的东西,以消除食品 /
矩形(foodx foody +10 foodx,foody-10 );
snakex [snakenode] = -20; snakey [snakenode] = -20;
/ 新的一个看不见的位置,下一个循环前位置 /
snakenode + ;/ 蛇的身体长度 /
foodyes的= 1 ;/ 屏幕需要出现新的食物 / 得分+ = 10;
PrScore();/ 输出新得分 /
}
的setColor(4);/ 画蛇 /
(I = 0; I <snakenode; + +)
矩形(snakex [I],snakey [I],snakex [I] 10
snakey [I] - 10);
的延迟(gamespeed);
的setColor(0);/ 删除最后一个用黑色蛇 /
矩形(snakex [snakenode-1],蛇y〔snakenode 1],
snakex [snakenode-1] 10,snakey [snakenode-1] -10); />} / ENDWHILE( kbhit) /
(snakelife == 1)/ 如果蛇循环 /
休息;
键= bioskey(0);/ 接收“按钮 /
(键== ESC)/ 如果按ESC退出 /
打破;
其他
(== UP键&& snakedirection! 4)
/ 确定是否在相反的方向移动 / snakedirection = 3;
其他
(键==右&& snakedirection!= 2)
snakedirection = 1;
其他
(键== LEFT的&& snakedirection!= 1)
snakedirection = 2;
其他(向下键== && snakedirection = 3)
snakedirection = 4;
} / ENDWHILE(1) /
}
/ 结束游戏 /
无效GAMEOVER(无效)
{
cleardevice();
PrScore();
的setColor(RED);
settextstyle (0,0,4);
outtextxy(200,200,“GAME OVER”);
的getch();
}
/ 输出结果 /
无效PrScore(无效)
{
字符海峡[10];
setfillstyle(**SOLID_FILL);
酒吧(50,15,220,35);
的setColor(6 );
settextstyle(0,0,2);
的sprintf(STR,“分数:%D”,成绩);
outtextxy(55,20,STR);
}
/ 图形结束 /
关闭无效(无效)
{
的getch();
closegraph();}
第3章课程设计总结
课程,旨在培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的一个重要组成部分,是对我们的工作的能力科学技术的飞速发展,当今计算机应用在生活中的实际具体的培训和学习过程可以把它无处不在。因此,作为二十一世纪的大学硕士课程开发技术是非常重要的,C语言是最常见和最强大的高级语言,这样做的C语言课程设计是必不可少的。回顾从课程设计,到目前为止,我们仍然有很多的感慨,的确,自题,以获得完整的编程,从理论到实践,在整整两个星期的一天,你可以学到很多东西,但不巩固以前学过的知识,学到了很多在书本上没有学到的知识。通过本课程的设计,让我们了解理论与实践相结合是非常重要的,只有理论知识是不够的,只有学习的理论和实践知识相结合得出结论,从理论到真正为社会服务,从而提高他们的实践技能和独立思考的能力。在设计过程中遇到的问题,可以说是非常困难的,毕竟,第一次做,难免会遇到各种各样的问题,而设计过程中发现了自己的不足之处,对于一些以前学过的知识了解不够深入,足够强大的主,例如,结构,指针,链表通过这次课程设计
后,我们以前学过的知识再重新思考。
我做的是贪吃蛇游戏。一个简单,但对我来说初学者难度是很大的。此外,它是第一次做课程设计,所以第一天的下午,一个下午,以腾出空间,但没有进步,最重要的是要知道从哪里开始,这个时候知道学校的老师耐心地教如何珍贵时间唯一的遗憾是不严重的时候上课。但现在太晚了,但幸运的是相当充裕的时间来重新审查的书籍。的结构,特别是,所述手部,几乎是一个空白。不过,经过几天的努力,主要是课本上的知识读一遍,知识点也基本持握,所以下一步就是开始正式编译的程序。但毕竟是个新手,或者不知道如何下手,所以在互联网下一个类似的程序,经过仔细研究,终于明白了C编程语言和方法的基本过程。
几经曲折,终于开始正式编程。
编程是一个很无聊很无聊的事,但把工作干完,获得信贷的压力,你也必须自己坚持下去,强势突破,据老师说,模块化思想,分节被写入。编程是一种高精度,一个模型的东西,稍不小心就会影响大局,但也可能是因为一个小错误的结果,整个程序无法运行。因此,仔细是一个非常重要的一步。是一个真正的编程开始觉得很无聊的事,但那种喜悦时,当一个程序运行成功的话不能,那种成就感是无可比拟的。又经过几天的努力,终于完成了程序,虽然程序仍然有很多失误和漏洞,但还是很开心。反正是自己的劳动,通过自己的努力得到的结果,但也
C语言学习是一个实践 *** 作,证明自己的进步。
通过这次课程设计,C语言,我有一个更好的认识和了解,以了解它是把重点放在实践中,不断地 *** 作机器,以便更好地学习它,我也发现了我很多不足之处,首先是没有足够的对自己的指法,经常按错字母,通过学习也有所改善;的C语言标准库函数又有些不很理解,以及不正确使用函数调用足够的熟悉,有C语言的错误往往不理解,通过学习实践,我意识到,学习 *** 作电脑应注重实践,不只是学习C语言或其他语言,以及其他电脑知识重在实践,后
在学习过程中,我将更加注重实际 *** 作,这是很好的学习,使自己的电脑。
在课程设计过程中,收获知识,能力的同时,我也学到了很多人生哲理,了解如何计划,如何实施这一计划,并在使用过程中如何掌握克服心理的负面情绪。
以上就是关于打死蛇干嘛要用头发缠着蛇呢全部的内容,包括:打死蛇干嘛要用头发缠着蛇呢、谁能帮我解释一下这段C语言蛇身构造的程序,谢谢啦、用JAVA编一个小游戏或者其他程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)