engerek.class is to creat snake and update position of snake
import java.util.ArrayList;
import javax.swing.*;
import java.awt.Image;
//import java.math.*;
public class engerek extends variables{
//inner class
protected class ekans{
private double x;
private double y;
private Image head;
//default constructor
public ekans(){
this.head = kelle;
this.x = 0.0;
this.y = 0.0;
}
//constructor
public ekans(Image i,double a,double b){
this.head = i;
this.x = a;
this.y = b;
}
public Image gethead(){
return head;
}
public int getx(){
return (int)x;}
public int gety(){
return (int)y;}
public void setxy(double x,double y){
this.x = x;
this.y = y;
}
}
protected Image askelle = new ImageIcon("C:\\Users\\engerek\\images\\aw.png").getImage();//to load Snake head image
protected Image kelle = new ImageIcon("C:\\Users\\engerek\\images\\ae.png").getImage();//to Load Snake image
protected Image wall = new ImageIcon("C:\\Users\\engerek\\images\\ay.png").getImage(); //to Load WALL image
protected Image yem = new ImageIcon("C:\\Users\\engerek\\images\\as.png").getImage();//to Load Seed image
ArrayList<ekans> coord = new ArrayList<ekans>();
ArrayList<ekans> food = new ArrayList<ekans>();
public void addtile(Image i,int coorx,int coory){
coord.add(0,new ekans(i,coorx,coory));
}
public void start(){
addtile(kelle,320,300);
addtile(kelle,300,300);
addtile(kelle,280,300);
addtile(kelle,260,300);
addtile(kelle,240,300);
addtile(kelle,220,300);
food.add(new ekans(yem,300,400));
food.add(new ekans(askelle,500,500));
food.add(new ekans(yem,440,440));
food.add(new ekans(askelle,100,100));
}
public Image load(Image i){
i = new ImageIcon("C:\\javapics\\deadly.png").getImage();
return i;
}
public void seedupdate(){
double xco,yco;
boolean tamamdir = false;
while(tamamdir==false){
xco = Math.random()*20;
yco = Math.random()*20;
xco = 20 + Math.round(xco)*40;
yco = 20 + Math.round(yco)*40;
for(int i = 0;i<coord.size();i++)
if(xco!=coord.get(i).x && yco != coord.get(i).y){
if(xco<760 && yco<560 )
if(yco>20 && xco>20){
if(index%2==1){
food.remove(index);
food.add(index,new ekans(yem,xco,yco));
}else{
food.remove(index);
food.add(index,new ekans(askelle,xco,yco));
}
tamamdir = true;
}
}
}
}
public void snakeupdate(){
ekans e = coord.get(0); //ekans object is pointed first element of arraylist
ekans newmove = new ekans();
yon = sonrakiyon;
switch(yon){
case kuzey :
newmove.x = e.x;
newmove.y = e.y - 20.0;
break;
case guney :
newmove.x = e.x;
newmove.y = e.y + 20.0;
break;
case bati :
newmove.x = e.x - 20.0;
newmove.y = e.y;
break;
case dogu :
newmove.x = e.x + 20.0;
newmove.y = e.y;
break;
}
//collision of snake with walls
if(newmove.x<20){
lost = true;
return;
}if(newmove.x>780){
lost = true;
return;
}if(newmove.y<20){
lost = true;
return;
}if(newmove.y>560){
lost = true;
return;
}
//collision of snake with itself
for(int i=0;i<coord.size();i++){
if(newmove.x == coord.get(i).x && newmove.y == coord.get(i).y){
lost = true;
break;
}
}
//eating seed and growing up
for(int i = 0;i<food.size();i++)
if(newmove.x==food.get(i).getx() && newmove.y == food.get(i).gety()){
growup = true;
score += 5;
index = i;
break;
}
if(growup==true){
coord.add(0,newmove);
}else{
coord.add(0,newmove);
coord.remove(coord.size()-1);
}
}
//if collision is occur then snake starts up again
public void collision(){
coord.removeAll(coord);
start();
score = 0;
dead++;
lost = false;
sonrakiyon = kuzey;
}
}
No comments:
Post a Comment