这个代码是我初涉编程的那年写成的,我从哈尔滨退学去了新乡我女朋友(现在成了俺老婆了)那里,在那里经历了个冬天,我们租的小屋是木板隔开的,有个公用阳台可以做饭,我们当时没有电脑,没有电视,我除了她什么也没有了,本科学历没有了,朋友也开始对我的能力表示怀疑,家人更是认为我不争气,高中一直是数 一数二的我却沦落到没学上的境地,我的心里很惨很黯淡,在新乡的几个月里我没有闲着,整天排的很满,早上起来就开始抄她在她学校借的狄拉克经典名著《量子力学》然后九点多去学校对面的小破街买菜,回来就给她做饭,记得她当时喜欢吃鸡蛋西红柿面条,呵呵,现在也是,我于是天天做那样饭,吃得我现在都不能想, 一想牙就麻!下午我仍然重复上午的“工作”,她一整天上课的时候我就去市区的新华书店看书,当时就看物理学或机械方面的...
一转眼快过年了,我爸帮我联系了一个补习班,于是03年的头半年我就去补习班了,准备第二次高考,可是我哪有心思学习,揣着多年的梦想就这样把它永远当成了梦,眼看高考了,结果很显然,失败----郑州大学软件技术学院网络与信息安全专业,大专,还是两年的。九月份开学了,上机课,我可丢了大人,作为软件学院的,连怎么把电影从光盘拷贝到电脑都不会...第一次上java课,我和女朋友吵架,怕她生气就坐半夜2点的车从郑州赶往新乡,到的时候才3点,根本 没有去她学校的公交,于是我就走过去,4点半到,又在她寝室楼下等了将近两个小时...第一节java课没上,我再回到学校发现自己已经明显跟不上了,但 是一次偶然的机会我写下了:(此代码绝对原版,原汁原味我的第一个程序,珍藏!)
public class a
{
public static void main(String s[])
{
int a=5;
int b=3;
int c=a+b;
System.out.println(c);
}
}
编 译运行后“奇迹般的出现了:8”(我光学编译书上的hello world就学了一周,以前根本不知道电脑是干什么的)于是狂喜,不知怎么回事,以后慢慢喜欢上了编程,进步很快,不出两个月,我的水平就已经是系里拔尖的了,巧的是我们的教java的老师还把我的一个程序作为了期末考试题,而那次期末考试我又是因为和女友吵架而缺考java...
到了第二学期,5月20号,我女朋友过生日,我们去了日照,回来时我发现我又离不开她了,我不能看见她依赖的望我的眼睛,一看见我就想一直陪在她身边,于是第二次离开学校,好在这次在郑州,离新乡比较近,我又一次搬到了那个小村庄,又是那点工作,只不过不再抄书了,改成写代码了,当时我已经有电脑了,下面 的代码就是那个时候写的,还有一个弹球小游戏下一篇贴出来,期末回去考试,还不错
转眼就是第二学年,也是我的最后一学年,这年里,我第三次离开了学校,也就是第三次搬进了那个小村庄,实际上是第五次,在我从哈尔滨回来之前的03年国庆 节我就在那个村庄住了将近一个月,然后第二次高考完在那住过一个月。这第三次,我们不怎么做饭了,因为天实在太冷了,屋里的水都能结冰,我也懒得写代码了,也是因为冷,可和她在一起,再冷我也愿意。
过完年大家都找到了实习单位,就差我了,我也不准备找了,想来上海找工作,这时她拿到了吉林大学研究生录取通知书,我的心里百感交集,几分欢喜几分惆怅,我能做的也只是再一次陪着她去了东北,因为我愿意。于是正式开始了我的IT旅程,在长春,我接触到了linux内核,并且开始喜欢上了它,一步一步地,我 深入到了操作系统内核,写了第一个,第二个....第n个驱动程序,一步一步地,我一直走到了今天
注释一下:下面的代码确实很垃圾,但是对于我来说却非常珍贵,异常珍贵,它记录了我和她在一起那一个炎热的难熬的却令我难忘的2005年的夏天,我初涉编程的第一个夏天。
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class tanchi extends JFrame implements KeyListener ,Runnable
{
Thread t=null;
Image offs;
Graphics gra;
int direc=3;
snake she;
food shi;//不知我当时为何将蛇的食物当成了屎,哈哈
zhangai zu;
int flag=0;
int jibie=0;
int biaozhi=0;
int fen=0;
int delay=600;
int ci=-1;
boolean xing;
int jieshu=0; //结束的次数
JPanel mainp;
int zhanwei[][]=new int[1444][1444];
Image im;
public tanchi()
{
String imagef=System.getProperty("user.dir")+"/2.PNG";
im=getToolkit().getImage(imagef);
xing=true;
she=new snake(4,zhanwei);
shi=new food();
zu=new zhangai(5,zhanwei);
zu.zushu=5;
shi.yes=true;
mainp=new JPanel();
mainp.addKeyListener(this);
mainp.setFocusable(true);
getContentPane().setLayout(null);
getContentPane().add(mainp);
mainp.setBounds(10,10,740,380);
setTitle("贪吃蛇");
setSize(700,450);
setResizable(false);
setVisible(true);
for(int i=0;i<1444;i++)
for(int j=0;j<1444;j++)
{
zhanwei[i][j]=0;
}
t=new Thread(this);
t.start();
}
public void paint(Graphics g)
{
g = mainp.getGraphics();
g.setFont(new Font("",2,20));
g.setColor(Color.blue);
g.drawString("得分:",400,30);
g.drawString("您的级别:",400,80);
g.drawString("
:暂停/开始|
:重新开始",400,130);
g.drawString("
:加速|
:减速",400,180);
g.drawString("游戏须知:",400,230);
g.drawRect(420,250,200,110);
g.setFont(new Font("",0,15));
g.drawString("1:吃掉兰色方块时加分",430,268);
g.drawString("2:出现红色方块时不能碰,",430,288);
g.drawString("否则游戏结束。",451,308);
g.drawString("3:不能碰墙或自身,否则",430,328);
g.drawString("否则游戏结束。",451,348);
g.clearRect(520,15,100,100);
g.setFont(new Font("",2,20));
g.drawString(""+fen,520,30);
g.drawString(""+jibie,520,80);
if(biaozhi==0)
{
for(int i=0;i<380;i+=10)
for(int j=0;j<380;j+=10)
{
if(zhanwei[i/10][j/10]==0)
{
g.setColor(Color.orange);
g.drawRect(i,j,10,10);
g.setColor(Color.lightGray);
if(i==370)
g.fillRect(i,j,11,9);
else
g.fillRect(i,j,9,9);
}
else if(zhanwei[i/10][j/10]==1)
{
g.setColor(Color.blue);
g.fillRect(i,j,9,9);
}
else if(zhanwei[i/10][j/10]==2)
{
g.setColor(Color.red);
g.fillRect(i,j,9,9);
}
}
}
if(biaozhi==1||she.x[0]==-10||she.y[0]==-10)
{
for(int i=0;i<380;i+=10)
for(int j=0;j<380;j+=10)
{
g.setColor(Color.orange);
g.drawRect(i,j,10,10);
g.setColor(Color.lightGray);
if(i==370)
g.fillRect(i,j,11,9);
else
g.fillRect(i,j,9,9);
}
g.setFont(new Font("华文彩云",3,30));
g.setColor(Color.red);
g.drawString("GAME OVER",90,140);
g.setFont(new Font("",4,20));
g.drawString("您的得分:"+fen,90,190);
}
}
public void run()
{
try{
while(true)
{
//食物的产生也要看障的情况
if(xing)
{
if(shi.yes)
{
boolean chong=false;
int lix=(int)(Math.random()*300)+40;
int liy=(int)(Math.random()*300)+40;
int baix=(int)(Math.random()*300)+40;
int baiy=(int)(Math.random()*20)+10;
for(int i=0;i
{
if(((lix-lix%10)==zu.x[i]&&(liy-liy%10)==zu.y[i])||((lix-lix%10+10)==zu.x[i]&&(liy-liy%10)==zu.y[i])||((lix-lix%10)==zu.x[i]&&(liy-liy%10+10)==zu.y[i])||((lix-lix%10-10)==zu.x[i]&&(liy-liy%10)==zu.y[i])||((lix-lix%10)==zu.x[i]&&(liy-liy%10-10)==zu.y[i]))
{
chong=true;
break;
}
}
if(zhanwei[(lix-lix%10)/10][(liy-liy%10)/10]==1)
chong=true;
if(chong)
{
shi.x=baix-baix%10;
shi.y=baiy-baiy%10;
}
if(!chong)
{
shi.x=lix-lix%10;
shi.y=liy-liy%10;
}
zhanwei[shi.x/10][shi.y/10]=1;
shi.yes=false;
}
if(she.x[0]==shi.x&&she.y[0]==shi.y)
{
she.renode(she.node,she.x,she.y);
shi.yes=true;
zhanwei[shi.x/10][shi.y/10]=0;
fen+=20;
if(fen%100==0)
{
jibie++;
if(jibie>=10)
{
zu.zushu=0;/
}
else
{
if(jibie>1)
zu.xiezu(zu.x,zu.y);
zu.zushu+=4;
zu.reshu(zu.zushu,she.x[0],she.y[0],shi.x,shi.y); //,zu.x,zu.y);
}
}
}
for(int i=2;i
{
if(she.x[0]==she.x[i]&&she.y[0]==she.y[i])
{
flag=1;
break;
}
}
for(int i=0;i
{
if(she.x[0]==zu.x[i]&&she.y[0]==zu.y[i])
{
flag=1;
jieshu++;
break;
}
}
if(she.x[0]>370||she.x[0]<0||she.y[0]<0||she.y[0]>370||flag==1)
{
biaozhi=1;
repaint();
break;
}
if(biaozhi!=1)
she.zou(direc);
Thread.sleep(delay);
repaint();
}
}
}catch(Exception e){}
}
public void keyPressed(KeyEvent ke)
{
}
public void keyReleased(KeyEvent ke)
{
}
public void keyTyped(KeyEvent ke)
{
if((""+ke.getKeyChar()).equals("w"))
{
direc=she.fangxiang("w");
if(she.y[0]>0)
she.zou(direc);
}
else if((""+ke.getKeyChar()).equals("s"))
{
direc=she.fangxiang("s");
she.zou(direc);
}
else if((""+ke.getKeyChar()).equals("a"))
{
direc=she.fangxiang("a");
if(she.x[0]>0)
she.zou(direc);
}
else if((""+ke.getKeyChar()).equals("d"))
{
direc=she.fangxiang("d");
she.zou(direc);
}
else if((""+ke.getKeyChar()).equals("b"))
{
if(t.isAlive() )
t.interrupt();
t=new Thread(this);
for(int i=0;i<1444;i++)
for(int j=0;j<1444;j++)
{
zhanwei[i][j]=0;
}
she=new snake(4,zhanwei);
shi=new food();
shi.yes=true;
zu=new zhangai(5,zhanwei);
zu.zushu=5;
xing=true;
Graphics g = mainp.getGraphics();
g.clearRect(0,0,380,380);
direc=3;
ci=-1;
flag=0;
jibie=0;
biaozhi=0;
fen=0;
delay=600;
she.zou(3);
t.start();
}
else if((""+ke.getKeyChar()).equals("t"))
{
ci++;
if(ci%2==0)
xing=false;
else if(ci%2==1)
xing=true;
}
else if((""+ke.getKeyChar()).equals("j"))
{
if(delay>=50)
delay-=50;
}
else if((""+ke.getKeyChar()).equals("k"))
{
delay+=50;
}
}
public static void main(String str[])
{
new tanchi();
}
}
class snake
{
int x[];
int y[];
int node=4;
int yipx;
int yipy;
int zhan[][];
public snake(int nod,int[][] zhan)
{
x=new int[nod];
y=new int[nod];
this.zhan=zhan;
for(int i=0;i
{
x[i]=190+i*10;
y[i]=190;
zhan[x[i]/10][19]=1;
}
}
public int fangxiang(String str)
{
int re=0;
if(str.equals("w"))
re=1;
else if(str.equals("s"))
re=2;
else if(str.equals("a"))
re=3;
else if(str.equals("d"))
re=4;
return re;
}
public void renode(int laonode,int[] xn,int[] yn)
{
node++;
x=new int[laonode+1];
y=new int[laonode+1];
for(int i=0;i
{
x[i]=xn[i];
y[i]=yn[i];
zhan[x[i]/10][y[i]/10]=1;
}
x[laonode]=yipx;
y[laonode]=yipy;
}
public void zou(int direction)
{
int linshi=0;
zhan[x[node-1]/10][y[node-1]/10]=0;
if(direction==1)
{
linshi=y[0];
yipx=x[node-1];
yipy=y[node-1];
for(int i=node-1;i>0;i--)
{
x[i]=x[i-1];
y[i]=y[i-1];
zhan[x[i]/10][y[i]/10]=1;
}
y[0]=linshi-10;
zhan[x[0]/10][y[0]/10]=1;
}
else if(direction==2)
{
linshi=y[0];
yipx=x[node-1];
yipy=y[node-1];
for(int i=node-1;i>0;i--)
{
x[i]=x[i-1];
y[i]=y[i-1];
zhan[x[i]/10][y[i]/10]=1;
}
y[0]=linshi+10;
zhan[x[0]/10][y[0]/10]=1;
}
else if(direction==3)
{
linshi=x[0];
yipx=x[node-1];
yipy=y[node-1];
for(int i=node-1;i>0;i--)
{
x[i]=x[i-1];
y[i]=y[i-1];
zhan[x[i]/10][y[i]/10]=1;
}
x[0]=linshi-10;
zhan[x[0]/10][y[0]/10]=1;
}
else if(direction==4)
{
linshi=x[0];
yipx=x[node-1];
yipy=y[node-1];
for(int i=node-1;i>0;i--)
{
x[i]=x[i-1];
y[i]=y[i-1];
zhan[x[i]/10][y[i]/10]=1;
}
x[0]=linshi+10;
zhan[x[0]/10][y[0]/10]=1;
}
}
}
class food
{
int x;
int y;
boolean yes;//判断是否要出现食物的变量
}
class zhangai
{
int x[];
int y[];
int zushu;
int zhan[][];
public zhangai(int nod,int[][] zhan)
{
this.zhan=zhan;
x=new int[nod];
y=new int[nod];
for(int i=0;i
{
x[i]=-20;
y[i]=-20;
}
}
public void xiezu(int[] x,int[] y)
{
for(int i=0;i
{
if(x[i]>10&&y[i]>0)
zhan[x[i]/10][y[i]/10]=0;
}
}
public void reshu(int za,int px,int py,int sx,int sy)
{
x=new int[za];
y=new int[za];
for(int i=0;i
{
int lix=(int)(Math.random()*320)+40;
int zux=lix-lix%10;
int liy=(int)(Math.random()*320)+40;
int zuy=liy-liy%10;
if(px!=zux&&(px+10)!=zux&&(px-10)!=zux&&(px-20)!=zux&&(px+20)!=zux&&(px-30)!=zux&&(px+30)!=zux&&(py-30)!=zuy&&(py+30)!=zuy&&sx!=zux&&(sx+10)!=zux&&(sx-10)!=zux&&(sx-20)!=zux&&(sx+20)!=zux&&py!=zuy&&(py+10)!=zuy&&(py-10)!=zuy&&(py-20)!=zuy&&(py+20)!=zuy&&sy!=zuy&&(sy+10)!=zuy&&(sy-10)!=zuy&&(sy-20)!=zuy&&(sy-30)!=zuy&&(sy+30)!=zuy&&(sx-30)!=zux&&(sx+30)!=zux&&(sy+20)!=zuy)
{
x[i]=zux;
y[i]=zuy;
zhan[x[i]/10][y[i]/10]=2;
}
else
{
x[i]=-20;
y[i]=-20;
}
}
}
}
原文链接: https://blog.csdn.net/dog250/article/details/5303351
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/410356
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!