C语言代码实现俄罗斯方块

这里为大家敲写一段怎样用C语言实现俄罗斯方块:

首先推荐大家使用CodeBlocks这个软件,方便添加不同的工程。
代码中有很多注释便于理解!

下面是效果图和全部的代码以及注释,大家可以观看并自己新增内容!

1、首先是main.c文件:

#include <stdio.h>
#include <stdlib.h>
#include "game.h"

int main()
{
 gameInit();
 return 0;
}

2、然后是mywindows.h文件:

#ifndef MYWINDOWS_H_INCLUDED
#define MYWINDOWS_H_INCLUDED

// 封装系统函数-系统调用模块
#include <windows.h>

// 初始化句柄
extern void initHandle();

// 设置颜色
extern void setColor(int color);

// 设置光标位置
extern void setPos(int x, int y);

// 设置光标是否可见
extern void setCursorVisible(int flag);

// 关闭句柄
extern void closeHandle();

#endif // MYWINDOWS_H_INCLUDED

3、接下来是mywindows.c文件:

#include "mywindows.h"

HANDLE handle;

// 初始化句柄
void initHandle()
{
 handle = GetStdHandle(STD_OUTPUT_HANDLE);
}

// 设置颜色
void setColor(int color)
{
 SetConsoleTextAttribute(handle, color);
}

void setPos(int x, int y)
{
 //, ,
 COORD coord = {x*2, y};
 SetConsoleCursorPosition(handle, coord);
}

// 设置光标是否可见
void setCursorVisible(int flag)
{
 CONSOLE_CURSOR_INFO info;
 info.bVisible = flag; //光标是否可见
 info.dwSize = 100;  //光标宽度1-100
 SetConsoleCursorInfo(handle, &info);
}

// 关闭句柄
void closeHandle()
{
 CloseHandle(handle);
}

4、下面是data.h文件,也就是数据库的存储地址:

#ifndef DATA_H_INCLUDED
#define DATA_H_INCLUDED

//函数声明\变量声明
// 存储数据-数据模块
//界面数组
extern int windowShape[25][26];

extern int block[7][4][4][4];

#endif // DATA_H_INCLUDED

5、数据库内容:data.c

#include "data.h"

//函数的定义

int windowShape[25][26] =
{
 {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1},
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1},
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1},
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1},
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1},
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1},
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1},
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1},
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1},
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1},
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1},
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1},
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1},
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1},
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1},
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1},
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1},
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1},
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1},
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1},
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1},
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1},
 {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1},
 {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
};// 边框为1,游戏池长度为14

int block[7][4][4][4] =
{
 {
  //Z{}
  {{1,1,0,0},{0,1,1,0},{0,0,0,0},{0,0,0,0}},
  {{0,1,0,0},{1,1,0,0},{1,0,0,0},{0,0,0,0}},
  {{1,1,0,0},{0,1,1,0},{0,0,0,0},{0,0,0,0}},
  {{0,1,0,0},{1,1,0,0},{1,0,0,0},{0,0,0,0}}
 },
 {
  //S
  {{0,1,1,0},{1,1,0,0},{0,0,0,0},{0,0,0,0}},
  {{1,0,0,0},{1,1,0,0},{0,1,0,0},{0,0,0,0}},
  {{0,1,1,0},{1,1,0,0},{0,0,0,0},{0,0,0,0}},
  {{1,0,0,0},{1,1,0,0},{0,1,0,0},{0,0,0,0}}
 },
 {
  //L{}
  {{1,0,0,0},{1,0,0,0},{1,1,0,0},{0,0,0,0}},
  {{1,1,1,0},{1,0,0,0},{0,0,0,0},{0,0,0,0}},
  {{1,1,0,0},{0,1,0,0},{0,1,0,0},{0,0,0,0}},
  {{0,0,1,0},{1,1,1,0},{0,0,0,0},{0,0,0,0}}
 },
 {
  //J
  {{0,1,0,0},{0,1,0,0},{1,1,0,0},{0,0,0,0}},
  {{1,0,0,0},{1,1,1,0},{0,0,0,0},{0,0,0,0}},
  {{1,1,0,0},{1,0,0,0},{1,0,0,0},{0,0,0,0}},
  {{1,1,1,0},{0,0,1,0},{0,0,0,0},{0,0,0,0}}
 },
 {
  //I{}
  {{1,1,1,1},{0,0,0,0},{0,0,0,0},{0,0,0,0}},
  {{1,0,0,0},{1,0,0,0},{1,0,0,0},{1,0,0,0}},
  {{1,1,1,1},{0,0,0,0},{0,0,0,0},{0,0,0,0}},
  {{1,0,0,0},{1,0,0,0},{1,0,0,0},{1,0,0,0}}
 },
 {
  //T
  {{1,1,1,0},{0,1,0,0},{0,0,0,0},{0,0,0,0}},
  {{0,1,0,0},{1,1,0,0},{0,1,0,0},{0,0,0,0}},
  {{0,1,0,0},{1,1,1,0},{0,0,0,0},{0,0,0,0}},
  {{1,0,0,0},{1,1,0,0},{1,0,0,0},{0,0,0,0}}
 },
 {
  //田
  {{1,1,0,0},{1,1,0,0},{0,0,0,0},{0,0,0,0}},
  {{1,1,0,0},{1,1,0,0},{0,0,0,0},{0,0,0,0}},
  {{1,1,0,0},{1,1,0,0},{0,0,0,0},{0,0,0,0}},
  {{1,1,0,0},{1,1,0,0},{0,0,0,0},{0,0,0,0}}
 }

};

6、游戏头部:game.h:

#ifndef GAME_H_INCLUDED
#define GAME_H_INCLUDED

// 游戏逻辑模块

#include <stdio.h>
#include <time.h>

typedef struct{
 int x;
 int y;
 int shape;
 int status;
 int color;
}BLOCK;

// 定义当前正在下落的方块,和下一个方块
BLOCK curBlock;
BLOCK nextBlock;

// 绘制游戏池边框
extern void gamePool(int x, int y);

// 打印操作说明
extern void printRule();

// 打印分数和等级
extern void printGradeLevel(int num);

// 游戏计时
extern void gameTime(clock_t startTime);

// 打印一个方块
extern void printBlock(int x, int y, int shape, int status, int color);

// 删除一个方块
extern void delBlock(int x, int y, int shape, int status);

//方块左移
extern void leftBlock();

//方块右移
extern void rightBlock();

//方块下移
extern int downBlock();

//方块变形
extern void changeBlock();

//方块直接落底
extern void bottomBlock();

//游戏暂停
extern void pause();

//随机产生游戏第一个方块
extern void startBlock();

//随机产生下一个方块
extern void blockNext();

//拷贝方块:把下一个方块变成当前正在下落的方块
extern void copyBlock();

//碰撞检测
extern int crash(int x, int y, int shape, int status);

//保存方块
extern void saveBlock();

//刷新游戏池
extern void updateGamePool();

//消行检测
extern void lineClear();

//消行下移
extern void lineDown(int line);

// 初始化游戏
extern void gameInit();

#endif // GAME_H_INCLUDED

7、最后一部分,游戏内容,game.c文件:

#include "game.h"
#include "mywindows.h"
#include "data.h"
#include <conio.h>

int level = 1;
int grade = 100;

// 打印游戏池
void gamePool(int x, int y)
{
 int i, j;
 for(i=0;i<25;i++)
 {
  for(j=0;j<26;j++)
  {
   if(windowShape[i][j] == 1)
   {
    setColor(0xc0);
    setPos(x+j,y+i);
    printf(" "); // printf("%2s", "");
   }
  }
 }
}

// 打印操作说明
void printRule()
{
 setColor(0x0f);
 setPos(31, 9);
 printf("操作规则:");
 setPos(32, 11);
 printf("按a或A左移");
 setPos(32, 12);
 printf("按d或D右移");
 setPos(32, 13);
 printf("按s或S下移");
 setPos(32, 14);
 printf("按w或W变形");
 setPos(32, 15);
 printf("按空格暂停");
 setPos(32, 16);
 printf("按回车直接下落");

}

void printGradeLevel(int num)
{
 switch(num)
 {
  case 0: break;
  case 1: grade += 10;break;
  case 2: grade += 25;break;
  case 3: grade += 50;break;
  case 4: grade += 70;break;
 }

 //等级-->作业

 setColor(0x09);
 setPos(3,6);
 printf("分数:%d", grade);

 setColor(0x0a);
 setPos(3,7);
 printf("等级:%d", level);
}

void gameTime(clock_t startTime)
{
 //clock_t endTime = clock();
 //clock_t ti = (endTime-startTime)/CLOCKS_PER_SEC;
 setColor(0x0d);
 setPos(3,8);
 printf("本次游戏运行时间:%ld", (clock()-startTime)/CLOCKS_PER_SEC);
}

// 打印一个方块
void printBlock(int x, int y, int shape, int status, int color)
{
 int i,j;
 setColor(color);
 for(i=0;i<4;i++)
 {
  for(j=0;j<4;j++)
  {
   if(1 == block[shape][status][i][j])
   {
    setPos(x+j,y+i);
    printf("■");
   }
  }
 }
}

// 删除一个方块
void delBlock(int x, int y, int shape, int status)
{
 int i, j;
 for(i=0;i<4;i++)
 {
  for(j=0;j<4;j++)
  {
   if(1 == block[shape][status][i][j])
   {
    setPos(x+j,y+i);
    printf(" "); //打印两个空格
   }
  }
 }
}

//方块左移
void leftBlock()
{
 //已经显示的方块删除,改变坐标,重新打印
 if(crash(curBlock.x-1, curBlock.y, curBlock.shape,curBlock.status) == -1)
 {
  return;
 }
 delBlock(curBlock.x,curBlock.y,curBlock.shape,
    curBlock.status);
 curBlock.x -= 1;
 printBlock(curBlock.x,curBlock.y,curBlock.shape,
    curBlock.status,curBlock.color);
}

//方块右移
void rightBlock()
{
 if(crash(curBlock.x+1, curBlock.y, curBlock.shape,curBlock.status) == -1)
 {
  return;
 }
 delBlock(curBlock.x,curBlock.y,curBlock.shape,
    curBlock.status);
 curBlock.x += 1;
 printBlock(curBlock.x,curBlock.y,curBlock.shape,
    curBlock.status,curBlock.color);
}

//方块下移
int downBlock()
{
 if(crash(curBlock.x, curBlock.y+1,curBlock.shape,curBlock.status) == -1)
 {
  //落到游戏池底部,产生新方块
  saveBlock();
  lineClear();
  updateGamePool();
  copyBlock();
  return -1;
 }else if(crash(curBlock.x, curBlock.y+1,curBlock.shape,curBlock.status) == -2)
 {
  //游戏结束
  return -2;
 }else{
  delBlock(curBlock.x,curBlock.y,curBlock.shape,
    curBlock.status);
  curBlock.y += 1;
  printBlock(curBlock.x,curBlock.y,curBlock.shape,
    curBlock.status,curBlock.color);
  return 0;
 }

}

//方块变形
void changeBlock()
{
 if(crash(curBlock.x, curBlock.y, curBlock.shape, (curBlock.status+1)%4) == -1){
  return;
 }
 delBlock(curBlock.x,curBlock.y,curBlock.shape,
    curBlock.status);
 curBlock.status = (curBlock.status+1)%4;
 printBlock(curBlock.x,curBlock.y,curBlock.shape,
    curBlock.status,curBlock.color);
}

//方块直接落底
void bottomBlock()
{
 while(1){
  //流程参考方块下落
  if(downBlock() !=0){
   return;
  }
 }
}

//游戏暂停
void pause()
{
 //
}

//随机产生游戏第一个方块
void startBlock()
{
 //设置时间为随机数种子
 srand((unsigned)time(NULL));
 //初始化curBlock
 curBlock.x = 22;
 curBlock.y = 1;
 //rand取一个随机整数
 curBlock.shape = rand()%7; //0-6
 curBlock.status = rand()%4; //0-3
 curBlock.color = rand()%0x10;
 if(0x00 == curBlock.color)
 {
  curBlock.color = 0x0f;
 }
 printBlock(curBlock.x, curBlock.y, curBlock.shape,
    curBlock.status, curBlock.color);
}

//随机产生下一个方块
void blockNext()
{
 //初始化nextBlock
 delBlock(nextBlock.x,nextBlock.y,
    nextBlock.shape,nextBlock.status);
 nextBlock.x = 34;
 nextBlock.y = 2;
 nextBlock.shape = rand()%7;
 nextBlock.status = rand()%4;
 nextBlock.color = rand()%0x10;
 if(0x00 == nextBlock.color)
 {
  nextBlock.color = 0x0f;
 }
 printBlock(nextBlock.x,nextBlock.y,
    nextBlock.shape,nextBlock.status,nextBlock.color);
}

//拷贝方块:把下一个方块变成当前正在下落的方块
void copyBlock()
{
 //当前方块=下一个方块
 curBlock = nextBlock;
 curBlock.x = 22;
 curBlock.y = 1;
 printBlock(curBlock.x, curBlock.y, curBlock.shape,
    curBlock.status, curBlock.color);
 blockNext();
}

//碰撞检测
//x,y为方块的下一个位置, status下一种形态
//碰撞返回-1,未碰撞返回0, 游戏结束返回-2
int crash(int x, int y, int shape, int status)
{
 int i,j;
 for(i=0;i<4;i++)
 {
  for(j=0;j<4;j++)
  {
   if(block[shape][status][i][j] == 1)
   {
    if(windowShape[i+y][j+x-15] == 1)
    {
     //方块一产生就发生碰撞
     if(curBlock.x == 22 && curBlock.y == 1)
     {
      return -2;
     }
     return -1;
    }
   }
  }
 }
 return 0;
}

//保存方块
void saveBlock()
{
 int i,j;
 for(i=0;i<4;i++)
 {
  for(j=0;j<4;j++)
  {
   if(block[curBlock.shape][curBlock.status][i][j] == 1)
   {
    windowShape[i+curBlock.y][j+curBlock.x-15] = 1;
   }
  }
 }
}

//刷新游戏池
void updateGamePool()
{
 int i,j;
 //从下到上刷新游戏池
 for(i=23;i>0;i--)
 {
  for(j=1;j<15;j++)
  {
   if(windowShape[i][j] == 1)
   {
    setColor(0x0e);
    setPos(j+15,i);
    printf("■");
   }else{
    setColor(0x00);
    setPos(j+15,i);
    printf(" ");
   }
  }
 }
}

//消行检测
//检测满行->这一行所有值都为1
void lineClear()
{
 int i,j;
 int num = 0; //统计一次消行数目
 for(i=23;i>0;i--)
 {
  int total = 0;
  for(j=1;j<15;j++)
  {
   total += windowShape[i][j];
  }
  if(total == 14)
  {
   //满行
   lineDown(i);
   i += 1;
   num += 1;
  }
 }
 printGradeLevel(num);
}

//消行下移
//从满行的这行开始,上面所有行顺序下移
void lineDown(int line)
{
 int i,j;
 for(i=line;i>1;i--)
 {
  for(j=1;j<15;j++)
  {
   windowShape[i][j] = windowShape[i-1][j];
  }
 }
}

// 初始化游戏
void gameInit()
{
 //第一步,必须初始化句柄
 //clock_t startTime = clock();
 initHandle();
 setCursorVisible(FALSE);

 gamePool(15,0);
 printRule();
 printGradeLevel(0);

 startBlock();
 blockNext();
 //定时开始时间,结束时间,通过控制时间差实现定时
 clock_t start,stop;
 start = clock();

 while(1)  //for(;;)
 {
  //检测是否有按键按下
  if(kbhit())
  {
   switch(getch())
   {
   case 'a':
   case 'A':
   case 75:
    leftBlock();break;
   case 'd':
   case 'D':
   case 77:
    rightBlock();break;
   case 's':
   case 'S':
   case 80:
    downBlock();break;
   case 'w':
   case 'W':
   case 72:
    changeBlock();break;
   case 32:
    pause();break;
   case 13:
    bottomBlock();break;
   }
  }
  //获取时间
  stop = clock();
  if(stop-start>0.5*CLOCKS_PER_SEC)
  {
   downBlock();
   //重新计时
   start = stop;
  }
 }
}

好,到现在这个游戏也就结束了!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 基于VC 6.0使用C语言实现俄罗斯方块

    本文实例为大家分享了C语言实现俄罗斯方块的具体代码,供大家参考,具体内容如下 裸写的俄罗斯方块的代码,有意见或者想征用,直接评论留言即可. 效果如下: 代码: /***************************************************************/ /*俄罗斯方块的实现 * 基于VC 6.0 编译链接即可运行 * 已实现的功能: * 1.初步的规划及背景图案的显示 * 2.四种方块实现左右移动.下键加速.上键变形(两种变形)功能 * 3.下落方块碰壁及触

  • VC++ 6.0 C语言实现俄罗斯方块详细教程

    今天把我之前写的大作业分享一下吧,并教你们如何实现,希望你们看了前面的教程也能自己写一个. 1.要先下载一个 graphics.h 的头文件来绘图. 2.初始化窗口:initgraph(x, y);这是先创建一个窗口的函数,以左上角为(0,0),向右为x轴,向下为y轴,其中x表示长x个单位,y表示宽y个单位. 3.关闭图像窗口:closegraph();结束时用来关闭用的. 4.按任意键继续:getch();这个就和getchar();差不多,为了防止以运行完就关了,这样能停顿一下,他的头文件是

  • C语言实现俄罗斯方块源代码

    本文实例为大家分享了C语言实现俄罗斯方块的具体代码,供大家参考,具体内容如下 GitHub:[C语言]实现俄罗斯方块源代码 Head.h #ifndef _HEAD_H_ #define _HEAD_H_ #include<graphics.h> #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<time.h> #include<string.h> #def

  • C语言实现俄罗斯方块小游戏

    C语言实现俄罗斯方块小游戏的制作代码,具体内容如下 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #define TTY_PATH "/dev/tty" #define STTY_ON "stty raw -echo -F" #define STTY_OFF "stty -raw echo -F" int map[21][14]; char

  • C语言实现俄罗斯方块

    本文实例为大家分享了C语言俄罗斯方块的具体代码,供大家参考,具体内容如下 本代码运行环境是Windows下的VS2013 首先创建tetris.cpp 然后依次创建view.h以及view.cpp.model.h以及model.cpp. 代码如下: view.h #pragma once #include <stdio.h> void ShowBackground(); void ShowBrick(); void ShowGame(); void OnLeft(); void OnRight

  • C语言Turbo C下实现俄罗斯方块

    本文实例为大家分享了C语言俄罗斯方块的具体代码,供大家参考,具体内容如下 #include <stdio.h> #include <dos.h> #include <conio.h> #include <graphics.h> #include <stdlib.h> #ifdef __cplusplus #define __CPPARGS ... #else #define __CPPARGS #endif #define MINBOXSIZE

  • C语言源码实现俄罗斯方块

    介绍 俄罗斯方块(Tetris, 俄文:Тетрис)是一款电视游戏机和掌上游戏机游戏,它由俄罗斯人阿列克谢·帕基特诺夫发明,故得此名.俄罗斯方块的基本规则是移动.旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分.由于上手简单.老少皆宜,从而家喻户晓,风靡世界. 源码 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> #includ

  • C语言代码实现俄罗斯方块

    这里为大家敲写一段怎样用C语言实现俄罗斯方块: 首先推荐大家使用CodeBlocks这个软件,方便添加不同的工程. 代码中有很多注释便于理解! 下面是效果图和全部的代码以及注释,大家可以观看并自己新增内容! 1.首先是main.c文件: #include <stdio.h> #include <stdlib.h> #include "game.h" int main() { gameInit(); return 0; } 2.然后是mywindows.h文件:

  • C语言代码实现猜数字

    本文实例为大家分享了C语言代码实现猜数字的具体代码,供大家参考,具体内容如下 题目描述 猜数字游戏,顾名思义,就是需要人们猜测一个未知但已确定的数.其中,这个未知但要确定的数就要由编写程序随机来产生,当这个数生成后我们猜数字,程序告诉我们猜的高了,低了,或猜对了来提示我们猜数. 代码实现 #include <stdio.h> #include <stdlib.h> #include <time.h> void Guess_num(void) { int n; char

  • Shell脚本实现C语言代码行数统计

    写了一个比较粗糙的C语言代码行数统计脚本,目前还有些bug,而且效率也不高.脚本主要就是去除大部分的注释后统计行数,相当于做了一部分预处理的工作.下面是代码: #!/bin/bash filename=$1 echo "`whoami`" if [ $# -lt 1 ];then echo "usage : ./scripts filename" exit -1 fi if [ ! -f $filename ];then echo "$filename i

  • Sublime Text 3 实现C语言代码的编译和运行(示例讲解)

    Sublime Text 3是一款优秀的代码编辑软件.界面简洁,轻巧快速,很受大家的欢迎. 最近开始用他来编辑数据结构的代码,这就需要在新建编译系统. 具体方法如下: 首先: 接下来是关键的一步,将以下代码粘贴到弹出的编辑页面中,文件名为name.sublime-build形式,name是新建的编译器名字. { "cmd": ["gcc","${file}","-fexec-charset=gbk","-o"

  • 如何将C语言代码转换为应用程序(也就是编译)

    C语言是高级语言,它的语法接近于人类的自然语言,但比自然语言严谨.计算机无法直接将C语言的代码运行,他们并不懂得什么是C语言,实际上,计算机只处理他们的机器语言,所以我们必须为自己找一个翻译,这个翻译可分为2种: 1.编译器 编译器是"文章的译者",它在我们完成创作后将其翻译(实际上是编译)成为机器语言. 2.解释器 解释器是"随声翻译",代码运行的同时它们就开始工作,BASIC就是使用解释器,一般认为这种方法效率很低. C语言要请第1种翻译,要想让C语言代码执行,

  • 70行C语言代码实现贪吃蛇

    本文实例为大家分享了C语言实现贪吃蛇的具体代码,供大家参考,具体内容如下 #include <stdio.h> #include <Windows.h> #include <conio.h> #include <time.h> #define MAX_WIDE 50 #define MAX_HIGH 16 short dx = 1, dy = 0, randxy, score = 0; COORD coord; struct Snake{ short len

  • 使用JS代码实现俄罗斯方块游戏

    简单的JS俄罗斯方块游戏源码,先给大家展示下效果图,如果大家感觉不错,请参考实现代码, 效果图: 代码如下,复制即可使用: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>使用JS实现俄罗斯方块游戏</title> <style type="text/css"> .MainFrame { border: 1px

  • C语言代码实现简易扫雷

    本文实例为大家分享了C语言代码实现简易扫雷的具体代码,供大家参考,具体内容如下 源.c代码如下: #define _CRT_SECURE_NO_WARNINGS #include"Game.h" void Game() { //创建两个雷区,一个记录雷,一个展示给玩家 char mine[ROWS][COLS] = { 0 }; char show[ROWS][COLS] = { 0 }; //初始化两个雷区 Init_board(mine, ROWS, COLS, '0'); Ini

  • C语言代码实现简易三子棋游戏

    本文实例为大家分享了C语言代码实现简易三子棋游戏的具体代码,供大家参考,具体内容如下 1. 三子棋游戏规则 是黑白棋的一种.三子棋是一种民间传统游戏,又叫九宫棋.圈圈叉叉.一条龙.井字棋等.将正方形对角线连起来,相对两边依次摆上三个双方棋子,只要将自己的三个棋子走成一条线,对方就算输了.但是,有很多时候会出现和棋的情况. 2.设计思路 游戏流程: 1.创建棋盘,并且初始化,将所有位置设置为空格. 2.打印棋盘 3.玩家通过输入坐标(row,col)进行落子 4.判定胜负 5.电脑随机落子 6.判

  • python3调用c语言代码的全过程记录

    开发环境 linux: python3.5.2 + ubuntu-gnome-16.04-desktop-amd64 windows:cygwin + powershell + python3.6 胶水语言python为什么要调用c代码? c与python对比python不擅长"大量运算"任务,python程序优势在于:编写简单,适合"IO密集型作业"(比如打开文件,下载图片,运行脚本).python作为知名的"胶水语言",快速实现"计

随机推荐