A user can reset the position of the snake by changing the values in the program provided below .
The program given below is run by giving following inputs
appletviewer SnakeCrawling.java
Remember the above command is to run the program , before that you need to run one more command to get the class file of the program , that is
javac SnakeCrawling.java
The points to understand and learn in this program are :
* It does not matter how many times you call repaint() method , it will only execute once in a method .
Remember the scope we are talking about is method .
* Whenever the repaint() is called , it initialises the applet and then run the paint() method again .
* drawString(s ,x ,y ) takes three parameters where s is the string that needs to show at (x,y) position in the
frame .
Please also note that in the awt and Swing , if we want to do some task or event at the press of button in our
frame then we use event handler. To use event handler , here , on pressing the button .
First step is to implement the ActionListener interface .Then we need to override the actionPerformed(event)
method . In the actionPerformed method , the action to perform after pressing the button ,code is written .
Here you can also make the snake move vertically ,what you need to do is that increment y with 10 each time in the for loop of the paint method .
In the last part of the code we are checking whether the snake does not cross the frame .
if(x>285)
If it does then we are calling repaint() which actually initialises the paint method again , and our snake will continue to crawl in the frame horizontally.
There is another important thing in the code , to make the java compiler understand that its a Applet file we need to write the following code in the java program
/* <APPLET CODE=ClassName.class WIDTH=X HEIGHT=Y></APPLET> */
Without the above line the java compiler will treat the code as simple java program . But the above line helps java compiler to make the code appletviewer compatible.
Demo :
Please find the Code below :
import java.awt.*; import java.awt.event.*; import java.applet.Applet; /* */ public class SnakeCrawling extends Applet implements ActionListener { int x=10,y=20,i,s=0,k=0; Button b1,b2; public void init() { setLayout(null); b1=new Button("Start"); b2=new Button("Stop"); add(b1); add(b2); b1.setBounds(50,220,60,40); b2.setBounds(200,220,60,40); b1.addActionListener(this); b2.addActionListener(this); } public void actionPerformed(ActionEvent e) { if(e.getSource()==b1) repaint(); if(e.getSource()==b2) { k=1; repaint(); } } public void paint(Graphics g) { if(s==1) { for(i=0;i<1;i++) { System.out.println("helooo"); g.drawString("*",x,y); g.drawString("*",x+10,y); g.drawString("*",x+20,y); g.drawString("*",x+30,y); if(k==1) break; x=x+40; // repaint(); System.out.println("over "); try { Thread.sleep(300); } catch(InterruptedException e1) {} System.out.println("oleeee"); if(x>285) x=10; repaint(); } } if(s==0) { g.drawString("*",0,20); g.drawString("*",10,20); g.drawString("*",20,20); g.drawString("*",30,20); s++; } } }