Javascript 俄罗斯方块 游戏代码

article/2025/9/25 1:17:00

本俄罗斯方块代码采用 JavaScript 脚本代码写成,简单易懂;

全代码采用静态类及静态变量成员组成;

全脚本通过实现代码全局配置 OLSFK.Options = {...}

定义方块起始坐标及定义各自的旋转点;

从初始化俄罗斯方块界面开始,再监听键盘事件;以及左右,向下及旋转动作判断,重新渲染方块位置;

判断是否消行,以及相应的加级判断,执行速度,加分操作来执行;

最后以判断是否当前级别大于所定义的最大级别来判断是否结束;

代码说明讲解

OLSFK.Options = { //相关参数width:12,//界面横向方块数height:20,//界面纵向方块数boxWidth : '16px',curLevel:1,speed : 1000, //setInterval,setTimeoutdirect : { //可以设定是A S D W, 还是← ↓ → Down: 40 , /*run speed*/Left: 37,Right: 39,Rotate: 38},Move:true,//是否正在移动Eventing:false,Levels: {1:1000,2:900,3:800,4:700,5:600,6:500,7:400,8:300,9:200,10:100},curBlock:4, //当前移动的图形名称nextBlock:0,GampMap:new Object(),Timer:null,deline:0,Score:0,Deling:false,Start:false,lineNum:10, //删除几行了,加级ScoreNum:40 //消一行加分
}

direct 表示 使用键盘方位键来操作方块的移动方向;

使用哪种方向键按自由喜欢配置,比如字母键的A, S, D, W; 或右边小数字键盘的数字键各自的键盘编码;

比如 上(旋转)、下、左、右 方向键的编码分别为:38、40、37、39;

Levels:表示级别配置,本配置共分为10级,每个级别所对应的下落速度,即定时执行间隔;

curBlock:表示当前活动的方块;

nextBlock:表示接下来执行的方块索引,并显示界面右上角的预览框中;

GampMap:用于保存在根据定义行列数形成的游戏表格中保存每个格的数据信息;

OLSFK.Options.GampMap[x+'_'+y] = 0;

对象表格为: id: "box_"+x+"_"+y;

初始化数据为 ‘0’;  表示该表格还未占用;当有占用时,设置值为 ‘1’;

Timer:为定时执行器;setTimeout 定时执行方块下落的的频率;定时时间越小,速度越快;

Deling:当正在执行消行操作时,下次暂不显示并下落;

lineNum:表示消超过 10 行,加一级;

ScoreNum:表示每消一行所加的分数;

OLSFK.ReItems = function (cur){ //key旋转点switch (cur){case 1:OLSFK.Items[1] = {//长块 LongBlock1:{x:4,y:0},2:{x:5,y:0},3:{x:6,y:0},4:{x:7,y:0},5:{x:5,y:0} //旋转点};break;//....}
}

该方法用于恢复方块的初始设置;

OLSFK.Next = { //key旋转点//长块 LongBlock1: {1:{x:0,y:1},2:{x:1,y:1},3:{x:2,y:1},4:{x:3,y:1}},//...
}

为不了不与游戏方块的设置冲突,独立出来下次随机方块的对象配置;

OLSFK.Items = { //key旋转点//长块 LongBlock1: {1:{x:4,y:0},2:{x:5,y:0},3:{x:6,y:0},4:{x:7,y:0},5:{x:5,y:0}},//方块Box2: {1:{x:4,y:0},2:{x:5,y:0},3:{x:4,y:1},4:{x:5,y:1},5:{x:0,y:0}},//凸块 TuBlock3: {1:{x:4,y:1},2:{x:5,y:0},3:{x:5,y:1},4:{x:6,y:1},5:{x:5,y:1}},//L块 LBlock4: {1:{x:5,y:0},2:{x:5,y:1},3:{x:5,y:2},4:{x:6,y:2},5:{x:5,y:2}},5: { //反向L块 FLBlock1:{x:5,y:2},2:{x:6,y:2},3:{x:6,y:1},4:{x:6,y:0},5:{x:6,y:2}},//Z块 ZBlock6: {1:{x:4,y:0},2:{x:5,y:0},3:{x:5,y:1},4:{x:6,y:1},5:{x:5,y:0}},7: {//反向Z块 FZBlock1:{x:4,y:1},2:{x:5,y:1},3:{x:5,y:0},4:{x:6,y:0},5:{x:5,y:1}}
}

方块共分为:长条块,方块,凸块(T块),L块,反L块,Z块,反Z块几种;

共7种方块,以1,2,3,4,5,6,7 索引键表示,方块是四个小块组成,每块都有各自的坐标,1-4表示组成该块的初始坐标位置,5表示旋转点;

OLSFK.Init = function() { //初始化界面//...
}

俄罗斯方块的界面初始化方法;将在 window.onload 中调用执行;

var w = OLSFK.Options.width;var h = OLSFK.Options.height;var total = w * h;var x=0,y=0;for (var i=0; i<total; i++){OLSFK.Options.GampMap[x+'_'+y] = 0;Lib.Tag('SPAN',{id:"box_"+x+"_"+y,name:"cbox",style:{width:OLSFK.Options.boxWidth,height:OLSFK.Options.boxWidth,border:"2px outset #669",background:"#ddd",float:"left",overflow:"hidden"},innerHTML:"&nbsp;",className:"cssbox"},back);var end = i + 1;x++;if (end >= w && end % w == 0){x=0;y++;Lib.Tag('DIV',{style:{clear:"both"}},back);}}

通过设置的 Options.width, Options.height 列数与行数,以及设置的小方格宽度,初始化了一个宽:Options.width列,高为 Options.height 的表格界面出来;

Lib.Tag 用于创建标签对象;

Lib.Tag = function(TAG,json,pnode) {//...
}

TAG为标签名,比如: div, span 等;

json为设置标签样式 style;

pnode 是该创建所在的父容器;

OLSFK.Init = function() {} 还创建主游戏区域旁边的下次随机方块预览区,当前级别,及分数,以及操作“开始”,“暂停”按钮等;

游戏初始入口点

window.onload = function() {if (window.isIE){document.attachEvent("onkeydown",function(e) {if (OLSFK.Options.Start){var E = OLSFK.KeyCode();OLSFK.EventFunc(E);}});document.attachEvent("onkeyup",function(e) {if (!OLSFK.Options.Move && OLSFK.Options.Start){OLSFK.Options.Move = true;OLSFK.Options.Eventing = false;OLSFK.Options.Timer = setTimeout(function() {OLSFK.play();}, OLSFK.Options.Levels[OLSFK.Options.curLevel]);}});} else {document.addEventListener("keydown",function(e) {if (OLSFK.Options.Start){var E = OLSFK.KeyCode();OLSFK.EventFunc(E);}},false);document.addEventListener("keyup",function(e) {if (!OLSFK.Options.Move && OLSFK.Options.Start){OLSFK.Options.Move = true;OLSFK.Options.Eventing = false;OLSFK.Options.Timer = setTimeout(function() {OLSFK.play();}, OLSFK.Options.Levels[OLSFK.Options.curLevel]);}},false);}OLSFK.Init();
}

主要是监听键盘事件,根据 键盘事件 返回的按钮编码与 OLSFK.Options.direct 设置方向键匹配来操作方块的移动,旋转等;

keydown 用于操作下落方块的移动方向,旋转等;并重新绘制方块位置;

keyup 后继续按本级速度向下落;

OLSFK.Options.Levels[OLSFK.Options.curLevel]

表示当前级别对应的速度,即定时器间隔执行时间(毫秒);

OLSFK.EventFunc = function(code) {switch (code){case OLSFK.Options.direct.Left: //LEFTif (!OLSFK.Options.Deling){clearTimeout(OLSFK.Options.Timer);OLSFK.Options.Eventing = true;OLSFK.Options.Move = false;OLSFK.Left();}break;//...}
}

该方法是 监听 keydown 事件执行的动作;code 为按键 编码;

当判断未在消行动作时,清除定时器,OLSFK.Options.Eventing 设置为事件中 true,OLSFK.Options.Move 为 false 表示停止移动;

进入 向左移动方法 OLSFK.Left();

OLSFK.Left = function() {var block = OLSFK.Items[OLSFK.Options.curBlock];if (block){var flag = true;for (var i=1; i<=4; i++){var x = block[i].x;var y = block[i].y;if (x-1 < 0){flag = false;break;}if (OLSFK.Options.GampMap[(x-1)+'_'+y] == 1 && !OLSFK.isMe(x-1,y)){flag = false;break;}}if (flag){for (var i=1; i<=4; i++) //清除图形{var itm = block[i];var box = Lib.Getid('box_'+itm.x+'_'+itm.y);box.style.background = '#ddd';OLSFK.Options.GampMap[itm.x+'_'+itm.y] = 0;}for (var i=1; i<=5; i++){var x = block[i].x;var y = block[i].y;OLSFK.Items[OLSFK.Options.curBlock][i] = {x:(x-1),y:y};}OLSFK.draw();} }
}

var block = OLSFK.Items[OLSFK.Options.curBlock]; 表示获取当前移动方块;

if (OLSFK.Options.GampMap[(x-1)+'_'+y] == 1 && !OLSFK.isMe(x-1,y))
{flag = false;break;
}

判断该方块四个小方块左边是否有被占用的方块,也即: OLSFK.Options.GampMap[(x-1)+'_'+y] 为 1; 并且该位置块不属于方块自己的;

当左边方向无占用格时,清除当前方块四个小方块位置,重新绘制方块新坐标位置;并重置 相应的 OLSFK.Options.GameMap [x+y] 相应格的值;

当按钮 keyup 时,继承正常向下落;

OLSFK.isMe 代码:

OLSFK.isMe = function(x,y) {var block = OLSFK.Items[OLSFK.Options.curBlock];if (block){for (var i=1; i<=4; i++){if (block[i].x == x && block[i].y == y){return true;}}}return false;
}

即指定的 x,y (参数值) 是否还在当前方块四个坐标内;

OLSFK.Right () 与 Left() 一样;

旋转方块代码;

OLSFK.Rotate = function() {var block = OLSFK.Items[OLSFK.Options.curBlock];if (block){var flag = true;var R = block[5];for (var i=1; i<=4; i++){var x = block[i].x;var y = block[i].y;if (R.x == x && R.y == y){} else {var nson = new Object();nson.x = R.x + R.y - y;nson.y = R.y - R.x + x;if ( nson.x < 0 || nson.y < 0 || nson.x >= OLSFK.Options.width || nson.y >= OLSFK.Options.height ){flag = false;break;}if (OLSFK.Options.GampMap[nson.x+'_'+nson.y] == 1 && !OLSFK.isMe(nson.x,nson.y)){flag = false;break;}}}if (flag){for (var i=1; i<=4; i++) //清除图形{var itm = block[i];var box = Lib.Getid('box_'+itm.x+'_'+itm.y);box.style.background = '#ddd';OLSFK.Options.GampMap[itm.x+'_'+itm.y] = 0;}var Pnt = 1;for (var i=1; i<=4; i++){var x = block[i].x;var y = block[i].y;if (R.x == x && R.y == y){Pnt = i;} else {var nson = new Object();nson.x = R.x + R.y - y;nson.y = R.y - R.x + x;OLSFK.Items[OLSFK.Options.curBlock][i] = {x:nson.x,y:nson.y};}}OLSFK.Items[OLSFK.Options.curBlock][5] = OLSFK.Items[OLSFK.Options.curBlock][Pnt];OLSFK.draw();} }
}

var R = block[5]; 就是获取旋转点;

就开始对方块四个小块以旋转点为中心,逆时针旋转(并不全是 90 度);当当前块不为旋转点时,旋转公式;

var nson = new Object();nson.x = R.x + R.y - y;
nson.y = R.y - R.x + x;

这个公式要这样看; 

ResultX = RotateX + (RotateY - CurrentY);
ResultY = RotateY - (RotateX - CurrentX);//Y的偏移量,就是X的增加值;
//反之同

当旋转四周都无占用物时;清除当前图形,重绘旋转后的图形位置;

重置 OLSFK.Options.GampMap[itm.x+'_'+itm.y] 各个方块的占用值;

OLSFK.Random = function() {if (OLSFK.Options.nextBlock != 0){OLSFK.Options.curBlock = OLSFK.Options.nextBlock;var block = OLSFK.Next[OLSFK.Options.nextBlock];if (block){for (var i=1; i<=4; i++){var itm = block[i];var box = Lib.Getid('cur_'+itm.x+'_'+itm.y);box.style.background = '#ddd';//OLSFK.Options.GampMap[itm.x+'_'+itm.y] = 0;}}} else {OLSFK.Options.curBlock = Math.floor(Math.random() * 7 + 1);}OLSFK.Options.nextBlock = Math.floor(Math.random() * 7 + 1);OLSFK.drawNext();
}

随机生成下次预下落的方块;并显示到右上角的预览表格里;

OLSFK.play = function(speed) {var block = OLSFK.Items[OLSFK.Options.curBlock];if (block && OLSFK.Options.Move){var flag = true;for (var i=1; i<=4; i++){var x = block[i].x;var y = block[i].y;if (y+1 >= OLSFK.Options.height){flag = false;break;}if (OLSFK.Options.GampMap[x+'_'+(y+1)] == 1 && !OLSFK.isMe(x,y+1)){flag = false;break;}}if (flag){for (var i=1; i<=4; i++) //清除图形{var itm = block[i];var box = Lib.Getid('box_'+itm.x+'_'+itm.y);box.style.background = '#ddd';OLSFK.Options.GampMap[itm.x+'_'+itm.y] = 0;}for (var i=1; i<=5; i++){var x = block[i].x;var y = block[i].y;OLSFK.Items[OLSFK.Options.curBlock][i] = {x:x,y:(y+1)};}OLSFK.draw();var S = OLSFK.Options.Levels[OLSFK.Options.curLevel];if (speed){S = 50;}OLSFK.Options.Timer = setTimeout(function() {OLSFK.play();}, S);} else {OLSFK.ReItems(OLSFK.Options.curBlock);OLSFK.newRun();}}
}

OLSFK.play 正常下落的方法,也得判断下落一格是否有被占用的格,如果没有,清除当前方块,绘制方块新位置;

当方块不能再下落时(flag = false),重置当前方块坐标配置; OLSFK.ReItems(OLSFK.Options.curBlock);

进入 OLSFK.newRun(); 新下落方块下落过程准备;

OLSFK.newRun = function() {clearTimeout(OLSFK.Options.Timer);OLSFK.DelFunc();if (OLSFK.Options.deline >= 10){OLSFK.Options.deline = 0;OLSFK.Options.curLevel ++;OLSFK.Element.CurLevel.setHTML("级:"+OLSFK.Options.curLevel);}OLSFK.Element.Score.setHTML("分:"+OLSFK.Options.Score);if (OLSFK.Options.curLevel <= OLSFK.Options.lineNum){OLSFK.Random();//判断是否结束OLSFK.ChkEnd();} else {OLSFK.Options.Move = false;OLSFK.Options.Start = false;OLSFK.Options.Eventing = false;OLSFK.Options.Deling = false;Lib.Getid('spn').innerHTML = 'Game Is Over! You Win the Game!';Lib.Getid('dobtn').innerHTML = ' 开始 ';}}

当下落结束时,清除定时器,暂停新方块下落,检测是否有可消除的行;减了多少行;

每减去一行 加分 OLSFK.Options.Score += OLSFK.Options.ScoreNum;

这个方法在 : 

OLSFK.DelFunc = function() {OLSFK.Options.Deling = true;OLSFK.Options.Move = false;OLSFK.Options.Eventing = false;var Fn = 0;for (var i=OLSFK.Options.height-1; i>=0; i--){Fn = 0;for (var j=0; j<OLSFK.Options.width; j++){if (OLSFK.Options.GampMap[j+'_'+i] == 1){Fn++;}}if (Fn == OLSFK.Options.width){OLSFK.Options.deline ++;OLSFK.Options.Score += OLSFK.Options.ScoreNum;OLSFK.DelLine(i);i++;}}OLSFK.Options.Deling = false;OLSFK.Options.Move = true;OLSFK.Options.Eventing = true;
}

中执行;

减完一行,就重置该行以上所有行往下降一行;并重置 :

OLSFK.Options.GampMap[x+'_'+y] = OLSFK.Options.GampMap[x+'_'+(y-1)];

该减行为上行的数据;

if (Fn == OLSFK.Options.width){OLSFK.Options.deline ++;OLSFK.Options.Score += OLSFK.Options.ScoreNum;OLSFK.DelLine(i);i++;}

该判断表示该行上所有格都被占用到;

回到 newRun 上,当判断消行超过几行时,即加级;

if (OLSFK.Options.curLevel <= OLSFK.Options.lineNum){OLSFK.Random();//判断是否结束OLSFK.ChkEnd();}

如果级数小于配置的总级数,则进入 OLSFK.random();

设置当前下落方块,并随机生成下次下落方块并预览右上角表格上;

OLSFK.ChkEnd = function() {var block = OLSFK.Items[OLSFK.Options.curBlock];if (block && OLSFK.Options.Move){var flag = true;for (var i=1; i<=4; i++){var x = block[i].x;var y = block[i].y;if (OLSFK.Options.GampMap[x+'_'+y] == 1){flag = false;break;}}}if (flag ){OLSFK.draw();//定时往下掉OLSFK.Options.Timer = setTimeout(function() {OLSFK.play();}, OLSFK.Options.Levels[OLSFK.Options.curLevel]);} else {OLSFK.Options.Move = false;OLSFK.Options.Start = false;OLSFK.Options.Eventing = false;OLSFK.Options.Deling = false;Lib.Getid('spn').innerHTML = 'Game Is Over';Lib.Getid('dobtn').innerHTML = ' 开始 ';}
}

当当前下落的方块进入表格上有被占用的格子,即被卡住,游戏结束;

反之 则 setTimeout 开始新方块的下落动作;

其他方法说明

OLSFK.Event = function() {if (window.isIE)return window.event;func = OLSFK.Event.caller; while(func!=null) {var arg0=func.arguments[0]; if(arg0) {return arg0; }func=func.caller; }return null; 
}OLSFK.KeyCode = function() {return OLSFK.Event().keyCode || OLSFK.Event().which;
}

OLSFK.Event = function();

这是一种获取当前事件的方法,可以比较兼容获取当前的事件;


http://chatgpt.dhexx.cn/article/2YnbXsPA.shtml

相关文章

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

这里为大家敲写一段怎样用C语言实现俄罗斯方块&#xff1a; 首先推荐大家使用CodeBlocks这个软件&#xff0c;方便添加不同的工程。 代码中有很多注释便于理解&#xff01; 下面是效果图和全部的代码以及注释&#xff0c;大家可以观看并自己新增内容&#xff01; 1&#xff1a;…

android俄罗斯方块完整代码

这段时间一直没有更新自己的博客,很多东西不经常看看会生疏了许多。在这里我就把自己前段时间编写的android俄罗斯方块代码贴出来。 转载请注明出处~~~~~~~~~~~~~~~~谢谢! http://blog.csdn.net/wu10045125/article/details/8248356 再贴出几张图片: 整个游戏我分为10个jav…

俄罗斯方块-C语言-完整代码

效果图如下 #ifndef _DAY7_H #define _DAY7_H #include<windows.h> #include<time.h> #include<stdbool.h> #include<conio.h>//控制台输入输出函数getch通过键盘进行的操作 //游戏区域位置设计 #define COL_BEGIN 2 #define COL_END 14 #define ROW_…

C语言俄罗斯方块(新版本完整代码)

2020博客之星年度总评选进行中&#xff1a;请为74号的狗子投上宝贵的一票&#xff01; 我的投票地址&#xff1a;点击为我投票 写在前面&#xff1a; 大家好&#xff0c;我是 花狗Fdog &#xff0c;来自内蒙古的一个小城市&#xff0c;目前在泰州读书。 很感谢能有这样一个平台…

HTML5俄罗斯方块网页游戏代码

HTML5俄罗斯方块网页游戏代码 非常好用 代码如下 注意 把所有文件放在一个文件夹里! 把所有css文件夹里,命名css 把所有js文件夹里,命名js 先看index.html <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>俄罗斯方块…

俄罗斯方块C++语言代码

大家都知道俄罗斯方块&#xff0c;就是控制不同的方块旋转&#xff0c;通过摆满一行方块消除得分&#xff0c;今天就让我们用C制作一个俄罗斯方块小游戏。 首先定义方块&#xff1a; int block00[4][4] { { 10,0,0,0 },{ 1,1,1,1 },{ 0,0,0,0 },{ 0,0,0,0 } }; int block01[…

c++俄罗斯方块 完整源代码

文章目录 1. 功能描述2. 源代码3. 运行截图4. 结尾 1. 功能描述 2. 源代码 #include<iostream> #include<string> #include<cstdlib> #include<windows.h> #include<ctime> #include<conio.h> #include<cstdio> using namespace st…

俄罗斯方块游戏代码

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a;小刘主页 ♥️每天分享云计算网络运维课堂笔记&#xff0c;努力不一定有回报&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️夕阳下&#xff0c;是最美的&#xff0c;绽…

C语言实现俄罗斯方块

目录 一、游戏效果展示 二、完整代码&#xff0c;可以直接拷贝运行 三、所需开发环境 四、具体项目实现 ①游戏欢迎界面 welcome( ) ②游戏背景 initGameScreen( ) ③方块表示 int block[ ][ ][ ] ④新方块表示nextBlock( ) ⑤设计游戏循环main( ) ⑥搭建用户操作框…

❤️VS Code❤️,cmd终端窗口运行,解决中文乱码问题

目录 问题归纳VS Code默认终端配置window窗口弹出相关解释 解决中文乱码问题运行俄罗斯方块程序 问题归纳 在软件Visual Studio中一切都是配置好的&#xff0c;默认终端运行采用弹出cmd窗口形式。而在VS Code中除了一些默认的配置设置外&#xff0c;所有环境配置、界面显示等操…

俄罗斯方块(C语言实现)

文章目录 游戏说明游戏效果展示游戏代码游戏代码详解游戏框架构建隐藏光标光标跳转初始化界面初始化方块信息颜色设置画出方块空格覆盖合法性判断判断得分与结束游戏主体逻辑函数从文件读取最高分更新最高分到文件主函数 游戏说明 俄罗斯方块相信大家都知道&#xff0c;这里就…

IDEA 设置类注释模板

效果展示 步骤&#xff1a;File-->settings-->Editor-->File and Code Templates-->Files 选择Class文件&#xff08;当然你要设置接口的还也可以选择Interface文件&#xff09;

设置idea类注释模板

1.File-->Settings...&#xff0c;或者直接按快捷键CtrlAltS. 2. Editor-->File and Code Templates-->Includes-->File Header,根据右下角Description的提示&#xff0c;添加自己需要的注释。 3.在右侧空白处设置自己的模板&#xff0c;若提示cant parse class.可…

IDEA 创建类注释模板设置

1.idea类注释 打开&#xff1a;file->setting->Editor->Filr and Code Templates->Includes->File Header 类注释模板&#xff1a; /** * title: ${NAME}* projectName ${PROJECT_NAME}* description: TODO* author ${USER}* date ${DATE}${TIME}*/ 2.方法注释…

java idea 配置注释模板

java idea 配置注释模板 最近项目组在加强代码规范管理。代码优雅从代码注释开始。奥力给&#xff01;&#xff01;&#xff01; 类注释的 File >> Settings >> Editor >> File and code Templates >> Files >> class 上图中的模板内容如下&…

idea类注释模板,方法注释模板。

idea设置--实时模板 新建组 类模板 /*** description $description$* author YJJ* date $date$ $time$* version 1.0*/ 方法模板 ** * description $description$ $params$ $return$* author YJJ* date $date$ $time$*/ params脚本&#xff1a; groovyScript("def r…

IDEA代码注释模板

存在问题: 每次写代码&#xff0c;新建类都没有注释&#xff0c;这对一个拥有代码强迫症患者来说&#xff0c;是多么不爽的一件事&#xff0c;不利于开发和后期问题排查 举个例子&#xff1a; 上次写代码的时候&#xff0c;这一段只有我和上帝知道&#xff0c;而现在&#xff0…

idea添加注释模板

自动添加描述 class // 创建时间有的也没有 仅仅就是class的描述信息&#xff0c;看个人公司情况吧&#xff0c;描述信息最好创建时间有一个空行&#xff0c;我忘记了/** * 描述信息 * * create: ${YEAR}-${MONTH}-${DAY} ${HOUR}:${MINUTE} */method // 一会要写入模板的内…

【idea生成类注释模板快捷键设置】

idea类注释模板快捷键 设置在方法上生成注释的快捷键1&#xff0c;ctrlaltS打开idea设置设置模板中的参数取值来源使用效果展示 设置在方法上生成注释的快捷键 1&#xff0c;ctrlaltS打开idea设置 设置模板中的参数取值来源 使用效果展示

IntelliJ IDEA类和方法注释模板配置

1、设置文件注释 设置Java类的注释模板&#xff0c;创建Java类自动生成该注释模板。 先看文件注释效果&#xff1a; 1.1、选择 IntelliJ IDEA —> 选择 Preferences... 打开IDEA属性设置面板 1.2、选择 File Code Templates—>选择 Includes 选项卡—>选择 File He…