java贪吃蛇(教你用java做贪吃蛇)
java贪吃蛇(教你用java做贪吃蛇)
要用java写贪吃蛇呢,你要掌握这几个知识点
1、集合的应用,Arraylist。
用来存储蛇块对象的。
2、swing编程
你需要绘制图形界面
3、事件监听
键盘监听和按钮点击事件监听
4、线程或定时器的应用(这里我们就用线程)
5、贪吃蛇的核心算法
(面向对象作为java的基本功在这里就不写出来了)
掌握了这些知识点之后,我们就可以来制作贪吃蛇了
1、创建蛇块对象
蛇块属性有位置位置用x,y表示,
packagesnakeeat;
publicclassSnakeact{
privateintx;
privateinty;
publicintgetX(){
returnx;
}
publicvoidsetX(intx){
this。xx;
}
publicintgetY(){
returny;
}
publicvoidsetY(inty){
this。yy;
}
}
2、创建窗口
packagesnakeeat;
importjavax。swing。;
publicclassSnakeextendsJFrame{
publicSnake(){
SnakewinwinnewSnakewin();
add(win);
setTitle(贪吃蛇);
setSize(435,390);
setLocation(200,200);
setVisible(true);
}
publicstaticvoidmain(String〔〕args){
newSnake();
}
}
3、绘制面板(很多逻辑方法都在这个类里)
packagesnakeeat;
importjavax。swing。;
importjava。awt。;
importjava。awt。event。;
importjava。util。;
importjava。util。List;
publicclassSnakewinextendsJPanelimplementsActionListener,KeyListener,Runnable{
JButtonnewGame,stopGame;开始和结束的按钮
intscore0;分数
intspeed1;蛇运动的速度
intrx0;食物的X坐标
intry0;
intnum10,num20;
inttemp0;判断方向
booleanstartfalse;判断游戏是否开始
JLabellable;
Listlt;Snakeactgt;listnewArrayListlt;Snakeactgt;();
RandomrnewRandom();
JDialogdienewJDialog();
JButtonok;
构造方法,初始化各种值
publicSnakewin(){
newGamenewJButton(开始);
stopGamenewJButton(结束);
this。setLayout(newFlowLayout(FlowLayout。LEFT));
newGame。addActionListener(this);
stopGame。addActionListener(this);
this。addKeyListener(this);
this。add(newGame);
this。add(stopGame);
die。setLayout(newGridLayout(2,1));
oknewJButton(继续);
ok。addActionListener(this);
die。setSize(200,200);
die。setLocation(400,300);
die。add(ok);
die。setVisible(false);
if(start){
lablenewJLabel(您的分数是:score);
die。add(lable);
}
}
绘制图形界面和蛇
publicvoidpaintComponent(Graphicsg){
super。paintComponent(g);
g。drawRect(10,40,400,300);
g。drawString(分数:score,150,20);
g。drawString(速度:speed,150,35);
g。setColor(newColor(0,255,0));
if(start){
g。fillRect(10rx10,40ry10,10,10);
g。setColor(newColor(255,0,0));
for(inti0;ilt;list。size();i){
g。fillRect(10list。get(i)。getX()10,40list。get(i)。getY()10,10,10);
}
eat();
}
}
吃食物的方法
publicvoideat(){
if(list。size()!0){
if(list。get(0)。getX()rxamp;amp;list。get(0)。getY()ry){
score;
if(score100){
speed;
}
rxr。nextInt(40);
ryr。nextInt(30);
SnakeacttempActnewSnakeact();
tempAct。setX(list。get(list。size()1)。getX());
tempAct。setY(list。get(list。size()1)。getY());
list。add(tempAct);
}
}
}
蛇身移动方法
publicvoidsonMove(){
SnakeacttempActnewSnakeact();
for(inti0;ilt;list。size();i){
if(i1){
list。get(i)。setX(list。get(0)。getX());
list。get(i)。setY(list。get(0)。getY());
}elseif(igt;1){
tempActlist。get(i1);
list。set(i1,list。get(i));
list。set(i,tempAct);
}
}
}
蛇头移动方法
publicvoidmove(intx,inty){
if(list。size()!0){
if(minYes(x,y)){
sonMove();
list。get(0)。setX(list。get(0)。getX()x);
list。get(0)。setY(list。get(0)。getY()y);
}else{
die。setVisible(true);
}
}
}
按钮事件监听
publicvoidactionPerformed(ActionEvente){
if(e。getSource()newGame){
newGame。setEnabled(false);
starttrue;
rxr。nextInt(40);
ryr。nextInt(30);
SnakeacttempActnewSnakeact();
tempAct。setX(20);
tempAct。setY(15);
list。add(tempAct);
requestFocus(true);
ThreadmThreadnewThread(this);
mThread。start();
repaint();
}
if(e。getSource()stopGame){
System。exit(0);
}
if(e。getSource()ok){
list。clear();
newGame。setEnabled(true);
die。setVisible(false);
score0;
speed1;
}
}
publicbooleanminYes(intx,inty){
if(list。size()!0){
if(!maxYes(list。get(0)。getX()x,list。get(0)。getY()y)){
returnfalse;
}
}
returntrue;
}
判断是否出界
publicbooleanmaxYes(intx,inty){
if(xlt;0xgt;40ylt;0ygt;30){
returnfalse;
}
for(inti0;ilt;list。size();i){
if(igt;1amp;amp;list。get(i)。getX()list。get(0)。getX()amp;amp;list。get(i)。getY()list。get(0)。getY()){
returnfalse;
}
}
returntrue;
}
键盘敲击事件监听
publicvoidkeyPressed(KeyEvente){
if(start){
switch(e。getKeyCode()){
caseKeyEvent。VKUP:
if(temp!2){
move(0,1);
temp1;
}
repaint();
break;
caseKeyEvent。VKDOWN:
if(temp!1){
move(0,1);
temp2;
}
repaint();
break;
caseKeyEvent。VKLEFT:
if(temp!4){
move(1,0);
temp3;
}
repaint();
break;
caseKeyEvent。VKRIGHT:
if(temp!3){
move(1,0);
temp4;
}
repaint();
break;
default:
break;
}
}
}
Override
publicvoidkeyTyped(KeyEvente){
TODOAutogeneratedmethodstub
}
Override
publicvoidkeyReleased(KeyEvente){
}
线程的run方法
publicvoidrun(){
while(start){
switch(temp){
case1:
move(0,1);
break;
case2:
move(0,1);
break;
case3:
move(1,0);
break;
case4:
move(1,0);
break;
default:
move(1,0);
break;
}
repaint();
try{
Thread。sleep(600speed);
}catch(InterruptedExceptione){
TODOAutogeneratedcatchblock
e。printStackTrace();
}
}
}
}
每一点都是一个类哦
效果图
有问题可以加qq群708653884交流哦
陋室铭朗诵(语言大师雅坤朗诵陋室铭,活教科书)陋室铭朗诵(语言大师雅坤朗诵《陋室铭》,活教科书)山不在高,有仙则名。水不在深,有龙则灵。斯是陋室,惟吾德馨。苔痕上阶绿,草色入帘青。谈笑有鸿儒,往来无白丁。可以调素琴,……
厦门福园公寓(厦门公寓爆炸案最新消息)厦门福园公寓(厦门公寓爆炸案最新消息)厦门日报:今天11:20分左右,厦门湖里区嘉禾路福园公寓一楼店面发生疑似管道煤气爆炸事故,目前已造成4人死亡,7人重伤,14人轻伤。……
耄耋老人(临终耄耋老人)耄耋老人(临终耄耋老人)有位80余岁老人在散步小憩时告诉我一件事,他在几十年前到腾冲边境堪测道路遇一老人,老人将考虑后事时的一本老书送给了他。一放几十年又到了他料理后事的……
2020一分一段表(2020年西安中考一分一段表)2020一分一段表(2020年西安中考一分一段表)目前,西安市初三家长们都处于焦急等待中考成绩的阶段,很多家长向大鹿咨询去年中考分数段的情况,以作参考。大鹿特整理成表,供……
我开始怀疑足协有一股很强的势力在阻碍中国足球向前发展按常理来说,足协选主教练应该是选最强的,不管是男是女,是中国人还是外国人;主教练选队员也是选最强的,不管是本土还是归化的,虽然排兵布阵有问题,主教练是专业或者是职业的,场上的问……
重庆方言有哪些(重庆土话爆笑顺口溜)重庆话考试题纲多搞一次叫复二火着急叫搞刨了直爽叫撇脱小气叫狗夹帅气叫撑抖午饭叫扫午淘气叫天棒厉害叫猫煞青蛙叫雀块蛇叫……
肉类植物(重庆发现吃肉的植物)肉类植物(重庆发现吃肉的植物)我们都知道,植物在自然界中,是食物链最底层的存在,它们一般都是被食草动物吃掉的,作为食草动物的能量来源。不过,世界之大无奇不有,植物界也是存……
韩国连爆七位艺人校园暴力争议,遭网友嘲讽直接申遗吧中国明星是全世界最暴利,投入产出比最高的职业之一,仅次于投胎到沙特皇室,这句话是网友用来讽刺现今娱乐圈部分没实力没颜值却高薪酬的明星群体。这句话虽然有些夸张,但的确也道出了我国……
杜淳当爸晒女儿脚丫,网传王灿160万天价月子中心被曝光4。20日杜淳在社交平台上官宣自己当爸的好消息,我们的世界多了一个她并艾特老婆王灿,配图是老婆亲吻宝宝小脚丫的照片,照片中王灿素颜露出半张脸,小心翼翼的亲吻女儿的小脚丫,尽显母……
波姬小丝(顶级美女波姬小丝)波姬小丝(顶级美女波姬小丝)容貌也可以成为才华。但是,容貌在成为才华的路上,需要个性和品格以及内涵的保驾护航。如果没有这些,容貌会昙花一现。我们来认识一位小美女,波……
王思聪前任甜仇疑似讽刺孙一宁骗钱骗色骗感情还被夸,吐了6月15日,网红孙一宁在网上爆出与王思聪的聊天记录后,让网友兴奋了一天一夜。网友们看了两人的聊天记录后,很多网友站队孙一宁,认为王思聪典型的资本家,瞬间国民老公形象就坍塌了。……
女生跳楼(一个女子跳楼的境界!)女生跳楼(一个女子跳楼的境界!)跳楼女子:死了也是白死黄玉岚我把自己目前写的文称作日记式,一般当天有感、当天记录。之所以隔几天写,可能一方面对不了解的情况不便发表意……
流行内衣外穿?倪妮迪丽热巴穿同类低胸礼服,完美身材显露无疑在昨天晚上,我国举办了第27届白玉兰颁奖典礼。在这场颁奖典礼中,电视剧《觉醒年代》和《山海情》的剧组成员们成为了最大赢家,其中大部分奖项都是由这两个剧组的成员们所领取了。……
杭州春望(白居易杭州春望)杭州春望(白居易杭州春望)白居易杭州春望望海楼明照曙霞,护江堤白踏晴沙。涛声夜入伍员庙,柳色春藏苏小家。红袖织绫夸柿蒂,青旗洁酒趁梨花。谁开湖寺西南路,草绿裙腰一道……
科技紫微星座网(从金星星座看另一半是不是真心爱你)科技紫微星座网(从金星星座看另一半是不是真心爱你)一个人是否真心喜爱你,可以通过他的星盘来看,金星星座代表另一半真心爱你的方式。科技紫微星座网就来为大家解开谜团,快打开他……
吃货行家金庸古龙是如何在武侠小说里写美食的话说看过《舌尖上的中国》第一季第二集《心传》的朋友,估计当时会有种感觉,觉得不像是在看美食片,更像一部武侠片,厨界如江湖,处处刀光剑影,兰花刀法、蓑衣刀法、整鱼脱骨、切中肯綮、……
为什么主动是金(主动是金)文丨西厢有情时光不长,愿你在我的文字里,相见不晚!导语:男人和女人是来自于两个星球的人,他们的相遇注定会留有空隙,而这个空隙需要用经营去填补。01在感情……
吃零食对颜值有影响?女孩子不想变胖变丑,要拒绝吃三种零食文丨木莲妈妈,原创内容爱美是女孩子的天性,尤其是对于那些家里有女儿的父母来说,自然都是自然女儿的颜值分分钟都在线,因为就连幼儿园的小男生都知道喜欢漂亮的女孩子,甚至都忍不……
电话聊天(打电话该怎么聊?)电话聊天(打电话该怎么聊?)哈喽,大家好呀,我是晨哥。晨哥的文章里提到过很多次一个理论。那就是我们和女生微信聊天,不如打电话聊天,打电话不如视频。因为打……
投资者关系管理(践行投资者关系管理新思路)投资者关系管理(践行投资者关系管理新思路)为展现沪市公司在新形势下投资者关系管理的有益探索,在中国证监会投资者保护局指导下,上交所推出资本市场结构性变化中上市公司投资者关……
三鲜馅水饺(三鲜水饺指的是哪三鲜?)三鲜馅水饺(三鲜水饺指的是哪三鲜?)喜欢吃饺子的人还是在于多数的,毕竟饺子是我们中国传统的食物之一,不仅口感好吃,而且寓意也特别好,因此许多家庭隔3差5,买一些食材在家里……
广州宝墨园(广州宝墨园荷花悄悄盛开!)广州宝墨园(广州宝墨园荷花悄悄盛开!)近日,位于番禺区沙湾街道紫坭村宝墨园的一片荷花池中,荷花已陆续盛开,墨绿色的荷叶托着浅粉色的荷花,在微风中轻轻摇曳,花香四溢,为炎炎……
怎样看阴宅风水(看阴宅风水也简单)怎样看阴宅风水(看阴宅风水也简单)清明节快到了,我们要致敬先祖,悼念先祖,感恩先祖。先祖在阴宅,掌握阴宅风水的四原则和五看,自己也能看自家坟地有无问题了。阴宅(坟地)风水……
山海清马喊水执意回涌泉村,马得福再画大饼,底气不足电视剧《山海情》由正午阳光出品,集结了黄轩、张嘉益、闫妮、热依扎、祖峰、黄觉、郭京飞、姚晨、王凯、尤勇智等等实力演员,堪称是今年最豪华的电视剧阵容,是一部讲述西北扶贫工作的群像……