写个俄罗斯方块需要什么样的知识?

俄罗斯方块的数据结构及实现 struct of a tetris 最近对开源版本的QT中的俄罗斯方块的实现做了一些分析,顺便记录一下。本文遵守GNU GPL。 一直想做自己的游戏,俄罗斯方块或者五子棋这样的应该都是初学者想去完成的例子,最近找了一些关于tetris的代码,发现QT里面的例子做的比较好,它用C++实现了一个很好的类,我也用Win32的GDI重写了一个不用QT版本的。这里记录一下QT中tetrix的实现。 1、类结构: QT的 阅读详情

在QQ群里几个群友,跟我一样是初学c++不久,想做一个小游戏来巩固c++的基础知识,但不知道如何下手。今年是俄罗斯方块诞生25周年,前一阵子我尝试做一个俄罗斯方块的小游戏,经过努力,真做出来了,在这里我谈谈自己的看法,本人也没什么编程经验肯定有疏漏之处欢迎指正。

1.搭建编程环境。我是用codeblocks+wxWidgets环境,南郁老师的《白话C++ 2008版》第二章有手把手详细描述,对于只写俄罗斯方块,我觉得只看2.1,2.2, 2.4, 2.14这四节就可以了。如果是想用MFC来写的话,估计安装完微软的visual studio就可以用了不需要做什么配置。

2.需要用到的c++语法知识:变量的定义与使用,表达式和语句(特别是for while switch),数组和指针(会操作三维数组),理解头文件和源文件的作用,全局变量的声明和定义,类的最基本知识(构造函数,调用类的成员函数)。对于这些基础知识,我看的是南郁老师写的《白话c++2008》。

3.图形界面方面需要用到的:定时器的使用,使用绘图函数画长方形(使用画笔对象),会给图形填充颜色(使用刷子对象),如果想给界面更美观些可考虑用相应的函数导入美女图片作为背景。要知道WM_PAINT这个事件,要知道键盘按键事件。如果想实现分数功能,那么要知道如何在屏幕上显示文字(其实就是画出来的,有相应的函数),大概是这些。

建议看孙鑫老师的VC++视频教程。这个视频我大概是1年前看的,那时候我还没自学c++的语法,朋友就建议直接看孙老师的这个视频了。大家不要见笑,那时我连引用都不认识(怎么函数参数里那么多取地址的?呵呵后来才知道那是引用),看得一头雾水。

虽然我这次写的俄罗斯方块使用的是wxWidgets图形库,但是跟孙老师视频中的基本是一样的,我是靠着那点印象来查wxWidgets的文档。对于孙鑫老师的这个视频,对于写俄罗斯方块来说,我觉得只需看前五章就可以了。菜单,对话框那些,可以先放放不用看。

4.对于俄罗斯方块需要用到的所谓算法。不需要什么复杂的算法,用到复杂的算法我也不懂。基本是算术运算,条件判断大概就可以了。尽量自己想,如果实在想不出来,推荐大家参考王富涛同学的这篇文章《自己动手写俄罗斯方块(一)》(在看完孙鑫老师的视频后再看此文章):http://student.youkuaiyun.com/space.php?uid=43658&do=blog&id=8263

暂时想到这么多了,以后想到的再上来补充。或者各位同学跟老师一起在下面提建议,让大家都可以尽快做出这么一个小游戏来。

 

我实现的功能,供参考:
字母T键:当游戏GAME OVER后重新开始游戏,分数将清零
字母P键:暂停和恢复游戏
方向键上,或K键:方块逆时针旋转
J键:方块顺时针旋转
方向键左,或A键:方块左移
方向键右,或D键:方向右移
方向键下,或S键:方块下移
字母N键:方块急速下落,一按这个键方块就到达底部
同时消去两行,三行,四行会有不同的额外分数奖励。到达最高级数后,方块下落速度加快,如果玩家如果能坚持一定秒数(例如设定为15秒),则自动降一级.然后达到一定分数又自动升级,如此循环.界面上有剩余秒数的提示.

附:
南郁老师的《白话c++ 2008》下载地址:
http://www.brsbox.com/gz81
孙鑫老师的vc++视频下载地址:
http://www.sunxin.org/video/vc.htm
我做的俄罗斯方块下载(大家先试着写,暂不公布代码):
http://www.brsbox.com/gz81
我的第一个作品(编程环境:Code::Blocks + wxWidgets):
http://student.youkuaiyun.com/space.php?uid=116706&do=blog&id=9911

用python写一个俄罗斯方块小游戏 相信大家都玩过俄罗斯方块吧,应该是小时候的回忆吧,但是想不想了解一下这个程序是怎么写出来的呢,自己写出来的应该玩起来更有感觉吧! 感觉还是蛮好玩吧! 接下来,我就分享一下这个游戏的源码过程啊! 先用python创建一个py文件 定义这次程序所需要的类 import sys import time import pygame from pygame.localsimport * import blocks 然后写出它所需要的模块 SIZE =30 # 每个小方格大小 BLOCK_HEIGHT =2 阅读详情

相关推荐

C++俄罗斯方块

前言 一个礼拜前想做一个俄罗斯方块小游戏,因为想用c++实现,但又受制于界面,于是苦读了几天的Qt。昨天开工连带一个不眠夜,总算是大功告成,个中滋味,怕是只有自己知道。 简介 俄罗斯方块,c++,qt。 功能:常规俄罗斯方块具有的:方块旋转,左移,右移,下落加速,消行,提示下一块样式等等都已实现。同时实现了记分以及暂停的功能。 效果图游戏过程效果图暂停效果图游戏结束效果图实现思路

YiShi's Blog 1万+

俄罗斯方块

大家好,我是作者:隐匿269,今天我带来的是小游戏:俄罗斯方块。俄罗斯方块是一个发行时间很长的游戏了,也是经典游戏之一,关于俄罗斯方块的游戏规则,相信大家都有一定了解,在这里,作者粗显的说明一下 1、标准大小:行宽为10,列高为20,以每个小正方形为单位。 2、组由4个小型正方形组成的规则图形,S、Z、L、I、O、T。 3、:以90度为单位旋转方块,以格子为单位左右移动方块,让方块加速落下。 4、方块移到区域最下方或是着地到其他方块上无法移动时,就会固定在该处,而新的方块出现在区域上方开始..

qq_60669466的博客 3877

用C语言写俄罗斯方块

用C语言写俄罗斯方块[微软用户1] 目录(需求):1.  屏幕作图与窗口实现;2.  方块的构造与产生;3.  方块的移动与翻转;4.  中断计时与方块自由下落;5.  判断方块碰撞与消行;6.  按键控制;7.  扩展新的功能;开发环境:1.       编译器tc2.02.       编辑器wintc1.83.       运行环境xp下dosbox1. 屏幕作图与窗口实现将整个屏幕划分成四部分:a、主游戏窗口;b、一个给预览下一个方块的4*4窗口;c、记录窗口SCORE和记录窗口LEVEL;d、提示

RICH_BABA的专栏 1万+

使用Python写俄罗斯方块,以游戏的方式学习编程

本文将用Python写一个终端版俄罗斯方块,用游戏的方式学习编程。

不二的AI笔记 3182

用python写一个俄罗斯方块程序

用python写一个俄罗斯方块程序。

热爱科技,物联,程序开发等 4154

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

游戏控制:enter键开始游戏 空格 键 暂停剩下的就是地球人都知道的方向键该游戏用c++和windows api在eclipse_cpp中编写,创建控制台程序即可改程序在vc6.0,和eclipse_cpp中运行正常写此程序职位练手,欢迎大家测试交流 如发现程序问题请联系wangzhen_621@126.com /* * Data.h *      Author: 王振 (吉

zhen_4321的专栏 9880

整理一下以前写的俄罗斯方块的文章

很早以前写了一些俄罗斯方块系列的文章,很多人读,一直有很多人留言提问,我整理下,定置起来,如果有时间,根据自己的理解,继续完善一下。希望大家喜欢。 学习C#从俄罗斯方块开始(一)概述 学习C#从俄罗斯方块开始(二)俄罗斯方块的规则和算法的简单实现 学习C#从俄罗斯方块开始(三)俄罗斯方块的优化和美化 因为时间关系,根据自己对俄罗斯方块的理解些了以上的三个文章,大家希望看到如何更新,写一些什么内容,我

技术专栏 3296

java实现俄罗斯方块项目

导读:俄罗斯方块项目,基本功能包括:游戏主界面显示模块、方块及数据显示模块、方块移动控制模块、游戏界面颜色控制模块、游戏进度、等级控制模块等。本项目结构如下: (1)游戏主界面显示模块: 显示游戏和帮助两个菜单; 游戏使用功能键盘,得分 等级; (2)画布、方块显示模块: 可以根据自己的需求来自己动手更改背景图片,在方块下落过程中,根据颜色的变化识别下落的方块。 (3)背景画布模块设计: 游戏用继承自JPanel的GameCanvas类控制背景画布的显示,用rows代表画...

孙叫兽的博客 7183

用python写的俄罗斯方块游戏

python,俄罗斯方块,游戏,基础,漂亮

hongccsdn的博客 1万+

【Python】用Python写一个俄罗斯方块玩玩

【代码】【Python】用Python写一个俄罗斯方块玩玩,说干就干!

用最通俗的语言,讲述对技术的理解。 2282

8卡H20运行DeepSeek-V3-0324性能和推理实测

最近在一台 8卡H20 机器上,先后部署了 DeepSeek-R1-AWQ (671B)和最新的 DeepSeek-V3-0324 (685B) ,测试了下性能和数学问题跑分。服务器由火山引擎提供。

weixin_53138109的博客 3364

【C语言】实现俄罗斯方块

学习了C语言,写一个俄罗斯方块,代码绝对可以运行 大神勿笑,只适合初学者 本人也是菜鸟1、考虑怎么存储俄罗斯方块俄罗斯方块的形状一共有19种类型,如果拿数组来表示的话,可能会比较会浪费空间(网上有很多实现代码) 考虑到每种方块形状的范围是4 *4的小方块,用 字模点阵的方式来存储,即设置一个4行4列的数组,元素置1即代表这个位置有小 方块,元素置0即代表这个位置无小方块,这个整个的4

菜鸟成长记 6万+

如何在Tagetik系统中抽取处理SAP系统财务数据

如何在Tagetik系统中抽取处理不同核算系统财务数据:以SAP为例,简单讲一下Tagetik对接SAP数据的基本情况

2201_75401663的博客 577

原生js写俄罗斯方块

效果图 方块定位原理通关16宫格定位坐标,把坐标存到数组中去 [ [[2,0],[2,1],[2,2],[1,2]],//L [[1,1],[2,1],[2,2],[2,3]], //右L [[2,0],[2,1],[2,2],[1,1]],//凸 [[2,0],[2,1],[3,0],[3,1]],//田 [[2,0],[2,1],[2,2],[2,3]],//一 [[2,0],[2,1],[3...

yh604005215的博客 7757

【iOS开发】dyld: Symbol not found: ___chkstk_darwin 问题解决

【iOS开发】dyld: Symbol not found: ___chkstk_darwin 问题解决 Xcode 13.2.1 运行到iOS12.x版本上崩溃报错如下:dyld: Symbol not found: ___chkstk_darwin dyld: Symbol not found: ___chkstk_darwin Referenced from: /private/var/containers/Bundle/Application/A424CEFD-51DB-450E-9D62-B8

wm9028的专栏 6563

数模笔记_多变量最优化计算之牛顿法

Date: 2_22 Name: Guo Yehao Theme: Calculation in Optimality with multiple variables Reference: 数学建模方法与分析(华章) 在上一节中,我们讨论多变量最优化计算中的随机搜索算法,它的精度并不是众多算法中最高的。在精度问题上,有的时候问题本身就带有明显的误差性,以至于我们不能将其忽略,比如上一节消防站部署的问题,我们在区域划分时就有了误差,因此我们并不需要对结果要求很高的精确度,所以用一些比较粗略的算法就可以.

weixin_45358177的博客 2415

Java写俄罗斯方块,了解一下

Java俄罗斯方块目录: Java俄罗斯方块 ---(一)游戏场景篇 Java俄罗斯方块 ---(二)游戏操作与逻辑篇 简要分析: 俄罗斯方块的规则在这里就不细说了,大家都知道,控制方块的移动,到底即停,当方块能填满一行时,便消除那一行的方块,并计分... 我们将用JPanel来完成整个游戏的制作。 首先我们来看看游戏运行时的图片。 (游戏图片 ) 上图是游戏制作过程中我...

OnlyPigeon 3万+

Godot 4.x 实现 JRPG 回合制战斗系统:架构、状态机与实战优化

游戏开发中,状态机是管理复杂逻辑流转的核心设计模式,尤其在回合制战斗这类事件驱动的场景中。其原理是通过定义有限的状态和明确的转移条件,来控制系统在不同阶段的行为,从而实现清晰、可维护的流程控制。这项技术的价值在于能够将杂乱的条件判断代码结构化,降低模块间的耦合度,提升代码的可读性和可扩展性。在游戏开发领域,状态机广泛应用于角色AI、UI流程、战斗系统等场景。本文以Godot引擎为例,深入探讨如何运用节点与信号驱动架构,构建一个健壮的JRPG(日式角色扮演游戏)回合制战斗系统。内容涵盖从核心的**状态机**设

weixin_33749242的博客 499

【Swing】——俄罗斯方块

该俄罗斯方块版本是教主第二次写的,也算是一次重构,主要有三个目标: 1. 一是“大道至简”,用最简单的逻辑实现俄罗斯方块的功能; 2. 二是“逻辑与视图分离”,解开游戏运行的逻辑与Swing渲染的耦合; 3. 三是记录Swing,记录一下Swing的简单使用方法。

十二翼堕落天使 3889

openbmc 支持mctp over pcie(三)(支持作为endpoint)

本文介绍了在Intel BHS平台上支持MCTP over PCIe端点开发的调试方法。开发基于CodeConstruct和AspeedTech-BMC的开源项目,将内核驱动改为模块形式以便调试。内容包括DTS配置、驱动模块设置步骤,以及如何将BMC配置为端点设备。调试过程涉及内核模块加载、MCTPD启动、参数设置等关键命令,并展示了路由表、地址和邻居信息的测试结果。该方案仅为实验性工作,需注意停止其他使用/dev/aspeed-mctp0接口的应用。

wit_yuan的专栏 1554

【python爬虫--爬取电商商品及对其销量、好差评等数据进行分析】Python爬虫爬取电商商品及大数据分析-实战

选择目标电商网站:这里选择爬取两个不同电商网站(比如京东、淘宝)上的商品数据,包括商品名称、价格、销量和评价信息。编写爬虫:通过爬虫获取商品信息并保存数据。数据清洗与对齐:将两个电商网站抓取到的数据进行统一清洗和对齐。数据分析:进行销量分析、好评与差评分析等。

Dreams°的博客 4012

JAVA写俄罗斯方块

public boolean IsOrNoMove(int x, int y, int ShapeType, int ShapeState)//判断当前的这个图形是否可以移动,这里重点强调x,y的坐标是指4*4的二维数组(描述图形的那个数组)的左上角目标。那么那些方块的造型到底从哪里来的呢,那就是我们自己设计的,常见的几种造型就是:I型,T型,L型,田字格型等等吧,自己个加呗!public void initMap()//初始化这个地图,墙的ID是2,空格的ID是0,方块的ID是1。i < mapRow;

2301_78835635的博客 1543

sdkmanager-2.0.0-11405-amd64

sdkmanager_2.0.0-11405_amd64

Javascript实现俄罗斯方块

JS实现俄罗斯方块 视频教程: JavaScript开发俄罗斯方块 代码地址: Tetris-based-on-JS 1.初始化布局 我们设置Game为中介者类 你会发现我们的Game.js文件的最外层是用IIFE包裹起来的,因为我们需要知道实际工作中都是多个类进行并行开发的,由于为了上生产,会将代码进行打包部署,也就是将所有的js文件打包为个js文件,如果没有IIEF会造成作用域和命名的冲突,所以我们用IIFE隔离作用域。 (function () { window.Game = function (

qq_24293765的博客 4102

基于单片机的智能桥梁支座控制系统设计.pdf

基于单片机的智能桥梁支座控制系统设计.pdf

大气污染排放 数据集 CSV(Air pollution emissions )(CEDS, 2022)【500010004】

大气污染排放 数据集 CSV(Air pollution emissions )(CEDS, 2022)【500010004】

上一篇: *01
下一篇: 多线程小测(一)(wxWidgets)
gz81cpp
博客等级 码龄17年 3粉丝 27原创
评论 17
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值