Makefile书写请看

《教你玩Makefile(一)》

欢迎大家加我的群:460952208

Makefile.PHONY:clean

PWD=$(shell pwd)

main_OBJ=$(PWD)/obj/main.o

print_OBJ=$(PWD)/obj/print.o

control_OBJ=$(PWD)/obj/control.o

main_SOURCE=$(PWD)/src/main.c

print_SOURCE=$(PWD)/src/print.c

control_SOURCE=$(PWD)/src/control.c

BIN=$(PWD)/bin/main

INCLUDE=$(PWD)/include

CC=gcc -g

$(BIN):$(main_OBJ) $(print_OBJ) $(control_OBJ)

$(CC) -o $@ $^

$(main_OBJ):$(main_SOURCE)

$(CC) -o $@ -c $< -I$(INCLUDE)

$(print_OBJ):$(print_SOURCE)

$(CC) -o $@ -c $< -I$(INCLUDE)

$(control_OBJ):$(control_SOURCE)

$(CC) -o $@ -c $< -I$(INCLUDE)

rebuild:clean $(BIN)

clean:

rm -rf *.o $(main_OBJ) $(print_OBJ) $(control_OBJ) $(BIN)

control.h#ifndef CONTROL_H_

#define CONTROL_H_

extern int shape[7][4][18];

//初始化图形的位置

extern int i_x,i_y;//init

//正在运动图形具体形状、颜色

extern int num,mode,color;

//正在运动图形的坐标

extern int x,y;

//下一图形相关变量

extern int n_x,n_y;

extern int n_num,n_mode,n_color;

//定时器时间间隔

extern int tm;

//开启定时器

void alarm_us(int t);

//信号处理函数

void catch_signal(int s);

//键盘控制

void key_control();

// 判断游戏结束

int Judge_end_game();

int Get_matrix_no_zero(int n_line);

//方块棋盘

extern int matrix[24][28];

#endif

print.h#ifndef _PRINT_H_

#define _PRINT_H_

extern int shape[7][4][18];

//初始化图形的位置

extern int i_x,i_y;//init

//正在运动图形具体形状、颜色

extern int num,mode,color;

//正在运动图形的坐标

extern int x,y;

//下一图形相关变量

extern int n_x,n_y;

extern int n_num,n_mode,n_color;

void print_next();

//指定位置输出 图形

void print_mode_shape(int n,int m,int x,int y,int c);

//清除指定位置图形

void eraser_shape(int n,int m,int x,int y);

//图形向下运动

int move_down(int n,int m);

void fall_down();

int move_left(int n,int m);

int move_right(int n,int m);

//生成新图片

void init_shape();

void store_shape();

//图形变换

int change_shape();

//碰撞检测,如果撞上返回1, 否则返回0

int judge_shape(int n,int m,int x,int y);

//绘制图形显示窗体

void print_matrix();

//判断,然后消除整行

static void destroy_line();

void game_over();

#endif

main.c#include //printf();

#include

#include "print.h"

#include "control.h"

#include

#include

#include

#include

int s_x = 9+2+28+1+5;//s: score45

int s_y = 4+1+6+5+2; //18

int l_x = 9+2+28+1+5;//l: level45

int l_y = 4+1+6+5+4+2;//22

//获取一个字符,不回显

int getch()

{

struct termios tm,tm_old;

//保存正常 输入属性 到 tm_old

tcgetattr(0,&tm_old);

//获取原始输入属性

cfmakeraw(&tm);

//设置原始输入属性

tcsetattr(0,0,&tm);

//不回显的获取一个字符

int ch = getchar();

//恢复正常输入属性

tcsetattr(0,0,&tm_old);

return ch;

}

//函数定义

void print_start_interface()

{

//清屏

printf("\33[2J");

int i;

//输出 最顶行、最低行

for(i = 0;i < 47;i++){

printf("\33[%d;%dH\33[43m \33[0m",5,i+10);

printf("\33[%d;%dH\33[43m \33[0m",30,i+10);

}

//输出三列

for(i = 0;i < 26;i++){

printf("\33[%d;%dH\33[43m \33[0m",i+5,10);

printf("\33[%d;%dH\33[43m \33[0m",i+5,40);

printf("\33[%d;%dH\33[43m \33[0m",

i+5,56);

}

//输出 分数、下一图形分割行

for(i=0;i < 17;i++){

printf("\33[%d;%dH\33[43m \33[0m",12,40+i);

}

// 18 45

printf("\33[%d;%dH分数:\33[0m",s_y,s_x);

// 22 45

printf("\33[%d;%dH等级:\33[0m",l_y,l_x);

fflush(NULL);

}

void init_game()

{

//输出窗体界面

print_start_interface();

//等待用户输入,然后程序开始运行

getch();

//获取随机数

//设置随机数种子

srand(time(NULL));

// random()%(max-min+1) + min;

num = random()%7;

mode = random()%4;

color = random()%7+40;

x = i_x;

y = i_y;

//生成图形

print_mode_shape(num,mode,x,y,color);

print_next();

printf("\33[?25l");

}

int main()

{

init_game();

//信号注册

signal(SIGALRM,catch_signal);

//开启定时器

alarm_us(tm);

//alarm(1);

//监听 用户键盘操作

key_control();

return 0;

}

效果图:

资源下载地址:点击打开链接

用linux写俄罗斯方块代码,linux下使用C写俄罗斯方块相关推荐

  1. 在linux下载github代码,linux 定时下载github最新代码

    场景:网站的代码在github上托管,静态网站部署在服务器上,每次自己修改完本地代码后,提交到github上,需要自己去服务器上执行git pull 拉取最新代码, 为了解决这种操作,自己再服务器上  ...

  2. linux简单重定向代码,Linux Shell编程(26)——代码块重定向

    像 while, until, 和 for 循环代码块, 甚至 if/then 测试结构的代码块都能做到标准输入的重定向. 即使函数也可以使用这种重定向的格式 .所有的这些依靠代码块结尾的 < ...

  3. jsp里写java代码报错,jsp里写java代码报错

    jsp里写java代码报错 [2021-02-11 06:42:03]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace("/ ...

  4. linux怎样写java代码,linux 怎么写java

    linux 怎么写java 一.环境安装 由于使用 yum 或者 apt-get 命令 安装 openjdk 可能存在类库不全,从而导致用户在安装后运行相关工具时可能报错的问题,所以此处我们推荐采用手 ...

  5. Linux运行8086代码,* linux下编译,链接,运行,汇编程序

    当前使用的操作系统:ubuntu11.10 汇编程序由定义好的段构成,每个段都有不同的目的,三个最常用的段: 1)data 段 汇编程序data(数据)段是可选的. 数据段声明带有初始值的数据元素,这 ...

  6. linux无限刷屏代码,linux下如何实现简单刷屏

    今天为了测试我的LCD有没有坏点写了一个简单的刷屏程序,效果还不错,分析给大家.代码如下: #include #include #include #include #include #include ...

  7. linux创建根目录代码,Linux文件系统之目录的建立

    一:前言 在用户空间中,建立目录所用的API为mkdir().它在内核中的系统调用入口是sys_mkdir().今天跟踪一下 函数来分析linux文件系统中目录的建立过程. 二:sys_mkdir() ...

  8. linux反调试代码,linux反调试方法

    如何防止自己的程序被调试器跟踪,这是一个很有趣的话题,也是反逆向工程中的一个重要话题.这里简单介绍一下Linux平台上的反调试技术. (本文主要参考:http://blog.txipinet.com/ ...

  9. linux运行软件代码,Linux软件安装-详细源码安装过程

    1.简介 软件的安装是linux学习时的重中之重,*nux上重要思维哲 学组合若干小功能进而成为一个可用可维护的系统平台.那么在 操作系统构建完成之时,除非内核等支持系统必需软件之外,可 拓展可维护的 ...

最新文章

  1. leetcode--罗马数字转整数--python
  2. 独家 | 10个数据科学家常犯的编程错误(附解决方案)
  3. 【BZOJ1085】【SCOI2005】骑士精神 [A*搜索]
  4. 微信开发(一):用JSAPI做微信支付+微信卡包(代金券)
  5. MySQL explain结果详解
  6. 重点客户销售数据分析python_药品销售数据分析--python
  7. 设计模式(3):抽象工厂模式(Abstract Factory Pattern)
  8. Echarts富文本rich及格式化工具formatter的使用
  9. 【回文串5 重点+动态规划】LeetCode 132. Palindrome Partitioning II
  10. MSSQL有关时间函数知识(转)
  11. Win7开机动画不见了
  12. 使用易宝支付接口实现java网上支付功能。
  13. c语言课程设计报告猜数字,猜数字游戏C语言课程设计报告书.docx
  14. Java性能调优的11个实用技巧
  15. 计算机博弈六子棋估值函数,六子棋
  16. 【报告分享】 2020国人旅游出行研究报告-企鹅智库(附下载)
  17. oracle打开游标报904,物化视图刷新报错ora-920(或ora-904)
  18. 硬件管理 远程开机,网络开机
  19. 王之泰201771010131《面向对象程序设计(java)》第四周学习总结
  20. 女神节快乐 | 用编程语言解密京东云程序媛!

热门文章

  1. html设置水平线大小
  2. 主流聚合支付对比分析【转】
  3. EMMC 介绍【转】
  4. OSPF—不规则区域、LSA
  5. springmvc中的设计模式---适配器模式_晏无心_新浪博客
  6. 中关村商城广告切换纯净代码
  7. 使用Topshelf部署.net core windows服务
  8. 异星工厂 factorio 0.16.51 下载
  9. 力天创见客流施工方案
  10. 云原生周报 | BFE 控制平面开源;LF APAC布道者招募;Grafana 8.2.2发布