C语言课设-1

一. C语言程序的基本语句能完成功能的体会(俄罗斯方块)

第一次C语言课设课,我们了解到了C语言设计小游戏的程序。我们看到了以前学姐学长设计的俄罗斯方块、贪吃蛇、飞机游戏。

令我印象最为深刻的是俄罗斯方块,虽说这只是一个简单的游戏,对于拥有一定编辑程序技术的人来说十分简单,但对于我来说并不是这样。

在看到学姐学长编的这个游戏之前,我是无法想象c-free除了计算数据还可以用来编辑游戏的。看到了这个,使我对C语言这门课更加的感兴趣。或许编程的过程并不是让人那么开心甚至是枯燥,但是看到自己辛苦编辑出的程序之后,胜利的果实会让我十分开心。

 

二. 俄罗斯方块中学习的基本C语言语句是怎么使用的?

1.int  main()

  ---开始一个函数

2. for(i=2;i<2*Frame_width-2;i+=2)

 {

  gotoxy(hOut,FrameX+i,FrameY+Frame_height);

  printf("═");         //打印下横框

  a[FrameX+i][FrameY+Frame_height]=2;    //记住下横框有图案

 }

  ---for语句(循环)

3. printf("**********下一个方块:");

  ---printf语句(输出)

4. gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+15);

  --- gotoxy语句 原型:extern void gotoxy(int x, int y);

                  是坐标程序的一个移动指令

5.if( tetris->flag>=2 && tetris->flag<=3 )

     {

      tetris->flag++;

      tetris->flag%=2;

      tetris->flag+=2;

     }

   ---if语句

6. switch(tetris->flag)      //共6大类,19种类型

 {

  case 1:         //田字方块

   {  

    a[tetris->x][tetris->y-1]=b[1];

    a[tetris->x+2][tetris->y-1]=b[2];

    a[tetris->x+2][tetris->y]=b[3];

    break;

   }

 

   ---break语句 强制循环停止

   ---switch case语句  switch的用法是判断case后面的表达式和switch后面的表达式

     是否相匹配,一旦case匹配,就会顺序执行后面的程序代码,而不管后面的case是否

     匹配,直到遇见break。

 

三. 俄罗斯方块的结构的分析。

 

#include <stdio.h>

#include <windows.h>

#include <conio.h>

#include <time.h>

//游戏窗口

#define FrameX 4   //游戏窗口左上角的X轴坐标

#define FrameY 4   //游戏窗口左上角的Y轴坐标

#define Frame_height  20 //游戏窗口的高度

#define Frame_width   18 //游戏窗口的宽度

//定义全局变量

int i,j,temp,temp1,temp2; //temp,temp1,temp2用于记住和转换方块变量的值

int a[80][80]={0};   //标记游戏屏幕的图案:2,1,0分别表示该位置为游戏边框、方块、无图案;初始化为无图案

int b[4];     //标记4个"口"方块:1表示有方块,0表示无方块

  

//声明俄罗斯方块的结构体

struct Tetris

{

 int x;     //中心方块的x轴坐标

 int y;     //中心方块的y轴坐标

 int flag;    //标记方块类型的序号

 int next;    //下一个俄罗斯方块类型的序号

 int speed;    //俄罗斯方块移动的速度

 int count;    //产生俄罗斯方块的个数

 int score;    //游戏的分数

 int level;    //游戏的等级

};

//函数原型声明

//光标移到指定位置

void gotoxy(HANDLE hOut, int x, int y);

//制作游戏窗口

void make_frame();

//随机产生方块类型的序号

void get_flag(struct Tetris *);

//制作俄罗斯方块

void make_tetris(struct Tetris *);

//打印俄罗斯方块

void print_tetris(HANDLE hOut,struct Tetris *);

//清除俄罗斯方块的痕迹

void clear_tetris(HANDLE hOut,struct Tetris *);

//判断是否能移动,返回值为1,能移动,否则,不动

int if_moveable(struct Tetris *);

//判断是否满行,并删除满行的俄罗斯方块

void del_full(HANDLE hOut,struct Tetris *);

//开始游戏

void start_game();

 

int  main()

{

 //制作游戏窗口

 make_frame();      

 //开始游戏

 start_game();

}

/******光标移到指定位置**************************************************************/

void gotoxy(HANDLE hOut, int x, int y)

{

 COORD pos;

 pos.X = x;  //横坐标

 pos.Y = y;  //纵坐标

 SetConsoleCursorPosition(hOut, pos);

}

/******制作游戏窗口******************************************************************/

void make_frame()

{

 HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);  //定义显示器句柄变量

 gotoxy(hOut,FrameX+Frame_width-5,FrameY-2);   //打印游戏名称

 printf("俄罗斯方块");

 gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+7);  //打印选择菜单

 printf("**********下一个方块:");

 gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+13);

 printf("**********");

 gotoxy(hOut,FrameX+2*Fr

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值