c++写的俄罗斯方块源码

C/C++编程新手入门基础系列:俄罗斯方块小游戏制作源代码 这篇文章主要为大家详细介绍了C语言实现俄罗斯方块小游戏,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1.要先下载一个 graphics.h 的头文件来绘图。 2.初始化窗口:initgraph(x, y);这是先创建一个窗口的函数,以左上角为(0,0),向右为x轴,向下为y轴,其中x表示长x个单位,y表示宽y个单位。 3.关闭图像窗口:closegraph();结束时用来关闭用的。... 阅读详情

游戏控制:
enter键开始游戏
空格 键 暂停
剩下的就是地球人都知道的方向键

该游戏用c++和windows api在eclipse_cpp中编写,创建控制台程序即可
改程序在vc6.0,和eclipse_cpp中运行正常

写此程序职位练手,

欢迎大家测试交流 如发现程序问题请联系wangzhen_621@126.com

 

/*
 * Data.h
 *      Author: 王振 (吉林大学)
 *      wangzhen_621@126.com
 *  Created on: 2008-11-11
 *
 */
#ifndef DATA_H_
#define DATA_H_
/*
 * index:7行10列数组 每行对应一种方块类别。
 *       每行的前四列为x坐标,中间四列为y坐标
 *       第九列为方块类别代码,最后一列为该类型方块有几种变形
 *  用一个5*5的矩阵表示 7种类别方块 共19种变形
 */
#include<windows.h>

static const int KINDS=7;//方块种类数量
static const int COLS=10;//数据列数

//每种方块的代号
static const int TYPE1=1;
static const int TYPE2=2;
static const int TYPE3=3;
static const int TYPE4=4;
static const int TYPE5=5;
static const int TYPE6=6;
static const int TYPE7=7;

//变形的种类
static const int RTYPE1=1;
static const int RTYPE2=2;
static const int RTYPE3=4;

static int rTypeNext;
static int rTypeDown;

//初始化方块坐标及对应的类别和变形种类
static const int index[KINDS][COLS]={
  {0,1,0,1,0,0,-1,-1,TYPE1,RTYPE1},
  {-1,0,1,2,0,0,0,0,TYPE2,RTYPE2},
  {0,0,1,1,1,0,0,-1,TYPE3,RTYPE2},
  {0,0,1,1,-1,0,0,1,TYPE4,RTYPE2},
  {-1,0,0,1,0,0,1,0,TYPE5,RTYPE3},
  {-1,0,1,1,0,0,0,-1,TYPE6,RTYPE3},
  {-1,0,1,1,0,0,0,1,TYPE7,RTYPE3}
};

//定时器ID
static const int TIMER=1;
//
//初始游戏级别对应的时间间隔
static int CURRENTLEVEL=600;
static int level=1;

//每种图形所包含的小方块数
static const int CTN=4;

//方块形状定义
typedef struct {
 int x;
 int y;
}sCord;
sCord sDown[CTN],sNext[CTN];

//下一个方块的坐标
static RECT rectNext[CTN];
//正在下落方块的坐标
static RECT rectDown[CTN];

//显示区域的大小
static const int cxSize=25;
static const int cySize=35;

//方块偏离(0,0)得位置
static int offsetx;
static int offsety;

static int offsetxNext;
static int offsetyNext;

//自定义消息
static const int MS_DOWN=10001;
//暂停
static bool go=true;
//开始
static bool startGame=false;
//结束
static bool gameOver=false;
//得分
static int score;


RECT rt={326,81,425,455};

//每个方格包含的像素
static const int pelsSize=13;

//显示区域大小的定义
static const POINT area[]={0,455,326,455,326,0};
//显示区域的表示方法 最后一列最后一行分别对应该行该列所具有的方块总数 0表示没有方块1表示有
static int fillArea[cySize+1][cxSize+1];

HBRUSH hBrush1=CreateSolidBrush(RGB(0,0,0));//方块颜色
//HBRUSH hBrush1=CreateSolidBrush(RGB(240,250,100));//黄色
HBRUSH hBrush2=CreateSolidBrush(RGB(255,255,255));
HPEN hPen1=CreatePen(PS_SOLID,0,RGB(230,230,230));//背景格颜色
#endif /* DATA_H_ */

 

/*
 * MainPro.cpp
 *
 *  Created on: 2008-11-11
 *      Author: 王振 (吉林大学)
 *      wangzhen_621@126.com
 */

#include"Data.h"
#include<iostream>
#include<cstdlib>
using namespace std;

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
/*
 * 逆时针方向旋转方格 返回能否旋转
 * @param lpsCord 要旋转的方块坐标指针
 * @param rType  旋转类型
 * @param rNumber 旋转次数
 * @param 是否第一次旋转
 */
bool rotate(sCord *lpsCord,int rType,int rNumber,bool firstRotate);
void getRandom();//初始化方格形状
void getNext(sCord *targ,const sCord* sur);//取出下一个方块
void draw();//绘出方格
void start();//开始游戏
bool downAble();//能否下落
bool leftAble();//能否左移
bool rightAble();//能否右移
bool disRows(HWND hwnd);//判断能否消行

//int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
//
//                   PSTR szCmdLine, int iCmdShow)

//void paintRect(HDC hdc,RECT&,HBRUSH hBrush);

int main()
{
    HINSTANCE hInstance=NULL;
 static TCHAR szAppName[]=TEXT("ELS");
 HWND hwnd;
 MSG msg;
 WNDCLASS wndclass;

 wndclass.style=CS_HREDRAW|CS_VREDRAW;//|~(WS_MINIMIZEBOX|WS_MAXIMIZEBOX)   ;
 wndclass.lpfnWndProc=WndProc;
 wndclass.cbClsExtra=0;
 wndclass.cbWndExtra=0;
 wndclass.hInstance=hInstance;
 wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
 wndclass.hCursor = LoadCursor (NULL, IDC_ARROW);
 wndclass.hbrBackground= (HBRUSH)GetStockObject (WHITE_BRUSH);// CreateSolidBrush(RGB(195,195,237

C++实现俄罗斯方块_源码_详细注释 1.在linux下安装ncurses库 sudo apt-get update sudo apt-get install libncurses5-dev 2.编译时-l 选项引入 ncurses 库 g++ main.cpp -l ncurses 3.源码 #include <iostream> #include <sys/time.h> #include <sy... 阅读详情

相关推荐

C++win32实现俄罗斯方块(类实现)

C++win32实现俄罗斯方块 头文件 源文件: 背景类的源码 .h文件 #pragma once class bg { public: bg(void); int getmark(); int addmark(int num); public: int background[20][10]; private: int mark ; }; .cpp文件 #include "Std...

ClownY的博客 3741

【C++ 程序】 俄罗斯方块游戏(EasyX 图形界面)

这个俄罗斯方块的程序花了我好多心血,主要亮点在于运用了类的知识(属于现学现用)。很不熟练,bug 频出,调试历程见后。 (忽然发现这是到目前为止我写的最长的程序了) // This is a simple Tetris game.

Teddy van Jerry的博客 3675

基于GEC6818开发板的俄罗斯方块游戏开发

使用粤嵌开发板GEC6818制作的一款俄罗斯小游戏(附带智能相册项目)

weixin_44230609的博客 1313

C++五子棋和俄罗斯方块

最近整理了下硬盘上的资料,发现多年前自己写的两款C++练手小程序:五子棋和俄罗斯方块,运行了一下发现程序还能正常跑起来,哈哈哈。这里把这两个东西分享出来,一是追忆下自己已经逝去的程序青春,二是留个纪念吧。 这两个小程序都采用visual studio工具和MFC框架。那个时候微软的MFC框架还是比较流行,现在估计知道这个框架的程序员朋友比较少。这两个小程序,没有使用任何第三方库和图片资源,界面完...

WALNUT的博客 1385

带你全流程做完c++ 俄罗斯方块小游戏

原版b站链接:【百万好评】国外油管大神C++游戏编程实战教程,新手6小时入门,并快速达到游戏开发能力(中英字幕)_哔哩哔哩_bilibili【百万好评】国外油管大神C++游戏编程实战教程,新手6小时入门,并快速达到游戏开发能力(中英字幕)共计28条视频,包括:1.俄罗斯方块、2.第一人称射击游戏、3.命令提示符的第一人称射击游戏 (C++)等,UP主更多精彩视频,请关注UP账号。

abeijixingdeye的博客 2136

【课程设计】俄罗斯方块游戏,重温经典(源码 + 详解)

【课程设计】俄罗斯方块游戏,重温经典(源码 + 详解) 优快云博客专家,C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

Muti-Agent 1万+

基于C++控制台的俄罗斯方块

使用vs开发的俄罗斯方块,使用简单的winAPI实现在控制台下的图形 化俄罗斯方块

windows编程实现俄罗斯方块

windows编程实现俄罗斯方块,多文件管理,思路清晰,实现简单。

基于API编写的俄罗斯方块

使用经典VC++之API编程,希望可以帮到你们很多

WPF毛玻璃效果别再写C#代码了!纯XAML用Border+VisualBrush+BlurEffect三步搞定

本文详细介绍了如何在WPF中通过纯XAML实现毛玻璃效果,无需编写C#代码。通过VisualBrush、BlurEffect和Clip的黄金组合,开发者可以快速创建专业级的毛玻璃面板,提升UI的现代感和视觉层次。文章还提供了性能优化技巧和实战案例,帮助开发者在各种场景中高效应用这一技术。

weixin_28630185的博客 352

【Pytorch】DCGAN实战(三):二次元动漫头像生成

文章目录1.实现效果2.环境配置2.1Python2.2Pytorch、CUDA2.3Python IDE3.具体实现3.1数据预处理(data.py)(1)导入包(2)定义数据类3.2模型Generator,Discriminator,权重初始化(model.py)(1)导入包(2)Generator(3)Discriminator(4)权重初始化3.3网络训练(net.py)(1)导入包(2)创建类3.4 主函数(main.py)(1)导入文件(2)定义超参数(3)实例化(4)进行训练4.训练过程4.1

qq_44031210的博客 4917

基于ADS\HFSS\Matlab的平面带通发夹滤波器设计

写在最前面,前段时间完成了一个小项目,实现13.5~14GHz的带通滤波器,算是第一个微波项目,在老师、学长、各种大神的指点下,最终完成了指标,想来这段时间收获良多,想到老师教导的,有能力的话要尽可能帮助别人,以及网络上很少面向于小白的教程,于是决定把自己做这个小项目的经过,一些关键步骤,还有软件操作和公式讲解都发出来,供大家指正借鉴。由于我目前大三,刚学习电磁场、微波工程等等,技术实在有限,同时这样是我第一次发帖子,只能尽可能的将自己确认过正确的内容,步骤以及一些经验写出来,供大家借鉴。

likaifeng12138的博客 5216

工作:三菱PLC与伺服之CC-Link IE Field Network通讯应用

CC-LINK-IE

好记性不如烂笔头 2万+

大数据领域数据建模的多源数据融合技术

在大数据时代,数据来源呈现出多样化的特点,包括企业内部的不同业务系统数据、外部的社交媒体数据、传感器数据等。这些多源数据蕴含着丰富的信息,但由于数据格式、语义、质量等方面的差异,难以直接进行分析和利用。多源数据融合技术的目的就是将这些来自不同数据源的数据进行整合、清洗、关联和统一,构建一个具有一致性和完整性的数据模型,以便更好地挖掘数据背后的价值,为企业决策、科学研究等提供有力支持。

Java大师兄的博客 1305

轴承寿命预测实战:手把手教你用IEEE PHM2012数据集训练模型(附Python代码)

本文详细介绍了如何利用IEEE PHM2012数据集构建轴承剩余寿命预测模型,从数据预处理、特征工程到LSTM模型训练与部署,提供了完整的Python代码实现。通过实战案例,帮助读者掌握预测性维护中的关键技术,提升工业设备的运行安全与效率。

weixin_29186249的博客 311

优化点列图(RMS半径)的操作数

优化点列图(RMS半径)的操作数

weixin_72050316的博客 2257

PCIe(二) —— 配置空间

好了,这一篇我们把配置空间的结构,分配和访问,都大概总结了一遍,并且还介绍了它们的头部字段和这些字段的意义,包括BAR和消息路由的原理。之后,如果有时间,我们会继续来探索PCIe的数据报文的结构和传输等等。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 1767

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

zhen_4321
博客等级 码龄19年 1粉丝 1原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值