別說了,我 寫個(gè)for循環(huán) 輸出 1-2000,把它拆開寫,輸出1,2,3,4,5...... 2000
成都創(chuàng)新互聯(lián)公司提供高防服務(wù)器租用、云服務(wù)器、香港服務(wù)器、成都移動(dòng)機(jī)房托管等
2000行就到手了
然后你對你們老師說
老師,你看我這段代碼厲害嗎。 這段代碼 省去了 昂貴的虛擬函數(shù)之間的調(diào)用。而且代碼簡單易懂。而且還有2000行。
/**
需求:獎(jiǎng)客富翁游戲。
菜單為:
1.注冊用戶信息。填寫用戶名,密碼,電腦隨機(jī)輸出一個(gè)4位
數(shù)字作為會(huì)員卡號(hào)。提示用戶名,密碼,及會(huì)員卡號(hào)。可選擇第二步了
2.登陸。校驗(yàn)是否已注冊(是否存在會(huì)員卡號(hào))。如果為空,
提示用戶不存在。
如果用戶名通過,密碼錯(cuò)誤,提示用戶名和密碼不匹配。如果
驗(yàn)證成功結(jié)束。如果輸入的用戶名密碼均匹配,給出登陸成功提示。
可選擇第三步了。
3.先判斷用戶是否已登陸(是否存在會(huì)員卡)
詢問是否進(jìn)行抽獎(jiǎng),選Y,電腦隨機(jī)輸出5個(gè)4位
數(shù)字。如果其中有一個(gè)數(shù)字與用戶卡號(hào)相同,則為中獎(jiǎng),獎(jiǎng)勵(lì)
人民幣為卡號(hào)數(shù)字的金額。否則,謝謝參與。程序退出。
*/
import?java.util.Scanner;
import?java.util.Random;
public?class?RichPerson?{
public?static?void?main(String[]?args)?{
//?輸出菜單。
for?(int?a?=?0;?a??6;?a++)?{
System.out.print("*");
}
System.out.print("歡迎進(jìn)入獎(jiǎng)客富翁系統(tǒng)");
for?(int?b?=?0;?b??6;?b++)?{
System.out.print("*");
}
System.out.print("\n\t\t1.注冊\n"?+?"\t\t2.登錄\n"?+?"\t\t3.抽獎(jiǎng)\n");
for?(int?c?=?0;?c??31;?c++)?{
System.out.print("*");
}
//?輸出菜單結(jié)束。
int?caidan?=?0;//?操作菜單
String?name?=?null;//?會(huì)員注冊名字
String?myname?=?null;//?會(huì)員登錄名字
String?password?=?null;//?會(huì)員注冊密碼
String?mypassword?=?null;//?會(huì)員登錄密碼
int?number?=?0;//?會(huì)員卡號(hào)
//?int?luckynumber=0;//幸運(yùn)號(hào)碼
String?str?=?null;//?詢問是否重試
//?輸入數(shù)字選擇菜單。
Scanner?input?=?new?Scanner(System.in);
Random?output?=?new?Random();
do?{
System.out.println("\n請選擇菜單:");
caidan?=?input.nextInt();
switch?(caidan)?{
case?1:
System.out.println("歡迎注冊富翁,請依次輸入用戶名和密碼");
System.out.println("用戶名:");
name?=?input.next();
System.out.println("密碼:");
password?=?input.next();
//?隨機(jī)給出4位數(shù)的會(huì)員卡號(hào)
number?=?output.nextInt(8999)?+?1000;
System.out.println("注冊成功!您的用戶名:"?+?name?+?",密碼:"?+?password
+?",會(huì)員卡號(hào):"?+?number?+?"。請牢記!");
break;
case?2:
//?先判斷用戶是否已注冊。
if?(name?==?null)?{
System.out.println("您好,請先注冊!");
break;
}?else?{
System.out.println("歡迎登錄富翁,請依次輸入用戶名和密碼!");
//?用戶名和密碼匹配校驗(yàn)次數(shù)設(shè)置為3次。
for?(int?x?=?0;?x??3;?x++)?{
System.out.println("用戶名:");
myname?=?input.next();
if?(!myname.equals(name))?{
System.out.println("用戶"?+?myname?+?"不存在!請重試,剩余次數(shù)"
+?(2?-?x)?+?"次!");
}?else?{
System.out.println("密碼:");
}
mypassword?=?input.next();
if?(!mypassword.equals(password))?{
System.out.println(myname?+?"密碼錯(cuò)誤!"?+?"請重試,剩余次數(shù)"
+?(2?-?x)?+?"次!");
}?else?{
System.out.println("登陸成功!");
break;
}
}
}
break;
case?3:
//?判斷用戶是否已注冊,是否已登錄。
if?(mypassword?==?null)?{
System.out.println("您好,請先登錄!");
break;
}?else?if?(!mypassword.equals(password))?{
System.out.println("您好,請先重試登錄!");
break;
}?else?if?(mypassword.equals(password))?{
System.out.println("歡迎進(jìn)入富翁,請問是否進(jìn)行幸運(yùn)抽獎(jiǎng)(y/n)?");
String?choujiang?=?input.next();
if?(choujiang.equals("y"))?{
int[]?luckynumber?=?new?int[5];
for?(int?m?=?0;?m??5;?m++)?{
luckynumber[m]?=?output.nextInt(8999)?+?1000;
}
for?(int?m?=?0;?m??5;?m++)?{
System.out.print(luckynumber[m]?+?"\t");
}
System.out.println("\n"?+?number);
for?(int?m?=?0;?m??5;?m++)?{
if?(number?==?luckynumber[m])?{
System.out.println("\n中獎(jiǎng)!金額為:"?+?luckynumber);
break;
}?else?{
System.out.println("\n木有中獎(jiǎng)!");
break;
}
}
這個(gè)需要建立一個(gè)數(shù)據(jù)庫和配置數(shù)據(jù)源才能夠正常保存游戲游戲記錄
如果沒有數(shù)據(jù)庫的話,執(zhí)行起來沒有問題,
但是在猜中之后,數(shù)據(jù)不能保存
而且會(huì)報(bào)跟數(shù)據(jù)庫相關(guān)的錯(cuò)誤。。。
不過對于初學(xué)來說,足夠了。。。
//猜數(shù)字游戲
//版本1.1
//作者:lymeng
//創(chuàng)建時(shí)間 2008/10/10
//最后修改時(shí)間 2008/10/14
import java.io.*;
import java.sql.*;
public class caishuzi
{
public static void main(String args[])
{
int suijishu; //產(chǎn)生的隨機(jī)數(shù)
String name; //玩家的名字
int nandu=-1; //選擇的難度
int caice=-1; //玩家所猜測的數(shù)字
int point=0; //記錄玩家猜測的次數(shù)
int a; //判斷是否保存信息成功
boolean fac=true;
String str;//用來判斷是否啟用了秘籍
shuru sr=new shuru();
zhuanhuan zh=new zhuanhuan();
baocun bc=new baocun();
suijishu sjs=new suijishu();
System.out.print("請輸入你的名字:");
name=sr.xinxi();
System.out.println("歡迎"+name+"來到猜數(shù)字的世界,請輸入整數(shù)");
System.out.println("數(shù)字越大 難度越高!");
System.out.print("難度: ");
while(fac)
{
nandu=zh.zhuanhuan1(sr.xinxi());
if(nandu-1)
{
System.out.print("你選擇的難度為:"+nandu);
fac=false;
}
else
{
System.out.println("請選擇正確的難度");
System.out.print("難度: ");
}
}
suijishu=sjs.suiji(nandu);
while(!fac)
{
System.out.print("請輸入你要猜測的數(shù)字: ");
str=sr.xinxi();
if(str.equals("lymeng"))
{System.out.println("正確數(shù)字是: "+suijishu);}
else
caice=zh.zhuanhuan1(str);
if(caice-1)
{
if(suijishu==caice)
{
System.out.println("恭喜你 猜對啦!");
point++;
//將玩家資料保存到數(shù)據(jù)庫中
a=bc.charu(name,point,nandu);
if(a-1)
System.out.println("信息保存成功");
else
System.out.println("信息保存失敗");
break;
}
else if(suijishucaice)
{
System.out.println("太小了!請重新輸入!");
point++;
}
else
{
System.out.println("太大了!請重新輸入!");
point++;
}
System.out.println("你已經(jīng)猜測了"+point+"次");
}
else
{
System.out.println("請輸入一個(gè)正確的數(shù)字");
}
}
}
}
//根據(jù)難度產(chǎn)生隨機(jī)數(shù)
class suijishu
{
public int suiji(int a)
{
int realnum;
realnum=(int)(Math.random()*50*a);
return realnum;
}
}
//記錄鍵盤得到的信息
class shuru
{
private String str;
public String xinxi()
{
try{
BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
str=bf.readLine();
str=str.trim();
}catch(Exception ex)
{System.out.println("出錯(cuò)啦笨蛋");}
return str;
}
}
//將鍵盤輸入的字符轉(zhuǎn)換為數(shù)字
class zhuanhuan
{
private int a;
public int zhuanhuan1(String str)
{
try{
a=Integer.parseInt(str);
return a;
}catch(Exception ex){return -1;}
}
}
class baocun
{
public int charu(String name,int point,int nandu)
{
int a=-1;
String sql;
Connection con=null;
PreparedStatement ps=null;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:caishuzi");
sql="insert into user(uname,cishu,nandu) values(?,?,?)";
ps = con.prepareStatement(sql);
ps.setString(1, name);
ps.setInt(2, point);
ps.setInt(3, nandu);
a=ps.executeUpdate();
//System.out.println("aaaaaaa");
ps.close();
con.close();
}catch(Exception ex)
{System.out.println("儲(chǔ)存出錯(cuò)啦!");
ex.printStackTrace();
}
return a;
}
}
java項(xiàng)目的大小衡量標(biāo)準(zhǔn):
微型:只是一個(gè)人,甚至是半日工作在幾天內(nèi)完成的軟件; ?
小型:一個(gè)人半年內(nèi)完成的?2000?行以內(nèi)的程序;
中型:?5?個(gè)人在?1?年多的時(shí)間內(nèi)完成的?5000-50000?行的程序;
大型:?5-10?人在兩年內(nèi)完成的?50000-100000?行的程序;
甚大型:?100-1000?人參加用?4-5?年完成的具有?100?,?0000?行的軟件項(xiàng)目;
極大型:?2000-5000?人參加,?10?年內(nèi)完成的?1000?萬行以內(nèi)的程序;
以上摘自:《軟件工程概論》???鄭人杰、殷人民編
這樣的觀點(diǎn)是以代碼行作為計(jì)量標(biāo)準(zhǔn)的,認(rèn)為代碼行多的自然項(xiàng)目也就大了。
我有計(jì)算器程序
import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.HashMap;
/**
* 我的計(jì)算器。MyCalculator 繼承于 JFrame,是計(jì)算器的界面
*/
public class Calculator extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private Border border = BorderFactory.createEmptyBorder(5, 5, 5, 5);
private JTextField textbox = new JTextField("0");
private CalculatorCore core = new CalculatorCore();
private ActionListener listener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
JButton b = (JButton) e.getSource();
String label = b.getText();
String result = core.process(label);
textbox.setText(result);
}
};
public Calculator(String title) throws HeadlessException {
super(title); // 調(diào)用父類構(gòu)造方法
setupFrame(); // 調(diào)整窗體屬性
setupControls(); // 創(chuàng)建控件
}
private void setupControls() {
setupDisplayPanel(); // 創(chuàng)建文本面板
setupButtonsPanel(); // 創(chuàng)建按鈕面板
}
// 創(chuàng)建按鈕面板并添加按鈕
private void setupButtonsPanel() {
JPanel panel = new JPanel();
panel.setBorder(border);
panel.setLayout(new GridLayout(4, 5, 3, 3));
createButtons(panel, new String[]{
"7", "8", "9", "+", "C",
"4", "5", "6", "-", "CE",
"1", "2", "3", "*", "", // 空字符串表示這個(gè)位置沒有按鈕
"0", ".", "=", "/", ""
});
this.add(panel, BorderLayout.CENTER);
}
/**
* 在指定的面板上創(chuàng)建按鈕
*
* @param panel 要?jiǎng)?chuàng)建按鈕的面板
* @param labels 按鈕文字
*/
private void createButtons(JPanel panel, String[] labels) {
for (String label : labels) {
// 如果 label 為空,則表示創(chuàng)建一個(gè)空面板。否則創(chuàng)建一個(gè)按鈕。
if (label.equals("")) {
panel.add(new JPanel());
} else {
JButton b = new JButton(label);
b.addActionListener(listener); // 為按鈕添加偵聽器
panel.add(b);
}
}
}
// 設(shè)置顯示面板,用一個(gè)文本框來作為計(jì)算器的顯示部分。
private void setupDisplayPanel() {
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.setBorder(border);
setupTextbox();
panel.add(textbox, BorderLayout.CENTER);
this.add(panel, BorderLayout.NORTH);
}
// 調(diào)整文本框
private void setupTextbox() {
textbox.setHorizontalAlignment(JTextField.RIGHT); // 文本右對齊
textbox.setEditable(false); // 文本框只讀
textbox.setBackground(Color.white); // 文本框背景色為白色
}
// 調(diào)整窗體
private void setupFrame() {
this.setDefaultCloseOperation(EXIT_ON_CLOSE); // 當(dāng)窗體關(guān)閉時(shí)程序結(jié)束
this.setLocation(100, 50); // 設(shè)置窗體顯示在桌面上的位置
this.setSize(300, 200); // 設(shè)置窗體大小
this.setResizable(false); // 窗體大小固定
}
// 程序入口
public static void main(String[] args) throws Exception {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
Calculator frame = new Calculator("我的計(jì)算器");
frame.setVisible(true); // 在桌面上顯示窗體
}
}
/**
* 計(jì)算器核心邏輯。這個(gè)邏輯只能處理 1~2 個(gè)數(shù)的運(yùn)算。
*/
class CalculatorCore {
private String displayText = "0"; // 要顯示的文本
boolean reset = true;
int MaxLen = 30;
private BigDecimal number1, number2;
private String operator;
private HashMapString, Operator operators = new HashMapString, Operator();
private HashMapString, Processor processors = new HashMapString, Processor();
CalculatorCore() {
setupOperators();
setupProcessors();
}
// 為每種命令添加處理方式
private void setupProcessors() {
processors.put("[0-9]", new Processor() {
public void calculate(String command) {
numberClicked(command);
}
});
processors.put("\\.", new Processor() {
public void calculate(String command) {
dotClicked();
}
});
processors.put("=", new Processor() {
public void calculate(String command) {
equalsClicked();
}
});
processors.put("[+\\-*/]", new Processor() {
public void calculate(String command) {
operatorClicked(command);
}
});
processors.put("C", new Processor() {
public void calculate(String command) {
clearClicked();
}
});
processors.put("CE", new Processor() {
public void calculate(String command) {
clearErrorClicked();
}
});
}
// 為每種 operator 添加處理方式
private void setupOperators() {
operators.put("+", new Operator() {
public BigDecimal process(BigDecimal number1, BigDecimal number2) {
return number1.add(number2);
}
});
operators.put("-", new Operator() {
public BigDecimal process(BigDecimal number1, BigDecimal number2) {
return number1.subtract(number2);
}
});
operators.put("*", new Operator() {
public BigDecimal process(BigDecimal number1, BigDecimal number2) {
return number1.multiply(number2);
}
});
operators.put("/", new Operator() {
public BigDecimal process(BigDecimal number1, BigDecimal number2) {
return number1.divide(number2, 30, RoundingMode.HALF_UP);
}
});
}
// 根據(jù)命令處理。這里的命令實(shí)際上就是按鈕文本。
public String process(String command) {
for (String pattern : processors.keySet()) {
if (command.matches(pattern)) {
processors.get(pattern).calculate(command);
break;
}
}
return displayText;
}
// 當(dāng)按下 CE 時(shí)
private void clearErrorClicked() {
if (operator == null) {
number1 = null;
} else {
number2 = null;
}
displayText = "0";
reset = true;
}
// 當(dāng)按下 C 時(shí),將計(jì)算器置為初始狀態(tài)。
private void clearClicked() {
number1 = null;
number2 = null;
operator = null;
displayText = "0";
reset = true;
}
// 當(dāng)按下 = 時(shí)
private void equalsClicked() {
calculateResult();
number1 = null;
number2 = null;
operator = null;
reset = true;
}
// 計(jì)算結(jié)果
/**
*
*/
private void calculateResult() {
number2 = new BigDecimal(displayText);
Operator oper = operators.get(operator);
if (oper != null) {
try {
BigDecimal result = oper.process(number1, number2);
displayText = result.toString();
} catch (RuntimeException e) {
clearClicked();//將計(jì)算器置為初始狀態(tài)
JOptionPane.showMessageDialog(null,"不能用零作除數(shù)","出錯(cuò)了",JOptionPane.OK_OPTION);
//e.printStackTrace();
}
}
}
// 當(dāng)按下 +-*/ 時(shí)(這里也可以擴(kuò)展成其他中間操作符)
private void operatorClicked(String command) {
if (operator != null) {
calculateResult();
}
number1 = new BigDecimal(displayText);
operator = command;
reset = true;
}
// 當(dāng)按下 . 時(shí)
private void dotClicked() {
if (displayText.indexOf(".") == -1) {
displayText += ".";
} else if (reset) {
displayText = "0.";
}
reset = false;
}
// 當(dāng)按下 0-9 時(shí)
private void numberClicked(String command) {
if (reset) {
displayText = command;
} else {
if(displayText.length() MaxLen)
displayText += command;
else
JOptionPane.showMessageDialog(null,"輸入的數(shù)字太長了","出錯(cuò)了",JOptionPane.OK_OPTION);
}
reset = false;
}
// 運(yùn)算符處理接口
interface Operator {
BigDecimal process(BigDecimal number1, BigDecimal number2);
}
// 按鈕處理接口
interface Processor {
void calculate(String command);
}
}
import?java.awt.Color;
import?java.awt.Graphics;
import?java.awt.Toolkit;
import?java.awt.event.ActionEvent;
import?java.awt.event.ActionListener;
import?java.awt.event.InputEvent;
import?java.awt.event.KeyEvent;
import?java.awt.event.KeyListener;
import?javax.swing.JCheckBoxMenuItem;
import?javax.swing.JFrame;
import?javax.swing.JMenu;
import?javax.swing.JMenuBar;
import?javax.swing.JMenuItem;
import?javax.swing.JOptionPane;
import?javax.swing.KeyStroke;
public?class?貪吃蛇?extends?JFrame?implements?ActionListener,?KeyListener,Runnable?{
private?static?final?long?serialVersionUID?=?1L;//表明實(shí)現(xiàn)序列化類的不同版本間的兼容性默認(rèn)的是1L,不加有異常。
private?JMenuBar?menuBar;
private?JMenu?youXiMenu,nanDuMenu,fenShuMenu,guanYuMenu;
private?JMenuItem?kaiShiYouXi,exitItem,zuoZheItem,fenShuItem;
private?JCheckBoxMenuItem?cJianDan,cPuTong,cKunNan;
private?int?length?=?6;
private?Toolkit?toolkit;
private?int?i,x,y,z,objectX,objectY,object=0,growth=0,time;//bojecx,y是食物的坐標(biāo)z為蛇前進(jìn)方向。。
private?int?m[]=new?int[50];
private?int?n[]=new?int[50];
private?Thread?she?=?null;?//靜態(tài)對象蛇
private?int?life=0;?//初始化變量?食物分?jǐn)?shù)
private?int?foods?=?0;
private?int?fenshu=0;
public?void?run(){
time=500;
for(i=0;i=length-1;i++){
m[i]=90-i*10;n[i]=60;
}
x=m[0];
y=n[0];
z=4;
while(she!=null){
check();
try{
Thread.sleep(time);
}catch(Exception?ee){
System.out.println(z+"");
}
}
}
public?貪吃蛇()?{
//創(chuàng)建新的對象
setVisible(true);
menuBar?=?new?JMenuBar();
toolkit=getToolkit();
//設(shè)計(jì)界面元素?游戲菜單對象
youXiMenu?=?new?JMenu("游戲菜單");
kaiShiYouXi?=?new?JMenuItem("開始游戲");
exitItem?=?new?JMenuItem("退出游戲");
//游戲困難對象
nanDuMenu?=?new?JMenu("困難程度");
cJianDan?=?new?JCheckBoxMenuItem("簡單");
cPuTong?=?new?JCheckBoxMenuItem("普通");
cKunNan?=?new?JCheckBoxMenuItem("困難");
//游戲分?jǐn)?shù)菜單對象
fenShuMenu?=?new?JMenu("積分排行");
fenShuItem?=?new?JMenuItem("最高記錄");
//關(guān)于對象菜單
guanYuMenu?=?new?JMenu("關(guān)于");
zuoZheItem?=?new?JMenuItem("關(guān)于作者");
//設(shè)置關(guān)于作者菜單
guanYuMenu.add(zuoZheItem);?//關(guān)于作者
//關(guān)于困難程度菜單
nanDuMenu.add(cJianDan);?//難度簡單
nanDuMenu.add(cPuTong);?//普通
nanDuMenu.add(cKunNan);?//困難
//關(guān)于游戲菜單欄
fenShuMenu.add(fenShuItem);?//設(shè)置分?jǐn)?shù)欄
youXiMenu.add(kaiShiYouXi);?//?設(shè)置加開始游戲欄
youXiMenu.add(exitItem);?//?設(shè)置游戲結(jié)束欄
menuBar.add(youXiMenu);?//設(shè)置?游戲菜單欄
menuBar.add(nanDuMenu);?//設(shè)置困難程度菜單欄
menuBar.add(fenShuMenu);?//設(shè)置分?jǐn)?shù)(積分)菜單欄
menuBar.add(guanYuMenu);?//設(shè)置關(guān)于菜單欄
zuoZheItem.addActionListener(this);?//監(jiān)聽注冊
kaiShiYouXi.addActionListener(this);
exitItem.addActionListener(this);
addKeyListener(this);?//添加指定的按鍵偵聽器,以接收發(fā)自此組件的按鍵事件
fenShuItem.addActionListener(this);
//設(shè)置?游戲快捷鍵
KeyStroke?keyOpen?=?KeyStroke.getKeyStroke('O',InputEvent.CTRL_DOWN_MASK);
kaiShiYouXi.setAccelerator(keyOpen);
KeyStroke?keyExit?=?KeyStroke.getKeyStroke('X',InputEvent.CTRL_DOWN_MASK);
exitItem.setAccelerator(keyExit);
//設(shè)置游戲框架
setJMenuBar(menuBar);
setTitle("貪吃蛇");
setResizable(false);
setBounds(300,200,400,400);
validate();?//驗(yàn)證有效性
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public?static?void?main(String?args[])?{
new?貪吃蛇();//菜單監(jiān)聽
}
public?void?actionPerformed(ActionEvent?e){
if(e.getSource()==kaiShiYouXi){?//菜單監(jiān)聽點(diǎn)擊開始游戲
length?=?6;?//設(shè)置貪吃蛇的初始長度大小為?6個(gè)方塊
life?=?0;?//生命?即分?jǐn)?shù)為0
foods?=?0;?//所吃食物為0
if(she==null){
she=new?Thread(this);
she.start();
}else?if(she!=null){
she=null;
she=?new?Thread(this);
she.start();
}
}
if(e.getSource()==exitItem){
System.exit(0);
}
if(e.getSource()==zuoZheItem){
JOptionPane.showMessageDialog(this,?"等制作"+"\n\n"+"?"+"上下左右控制沒有暫停哦"+"\n");
}
if(e.getSource()==fenShuItem){
JOptionPane.showMessageDialog(this,"最高記錄為"+fenshu+"");
}
}
//測試一下
public?void?check(){
isDead();
if(she!=null){
if(growth==0){
reform();?//得到食物
}else{
upgrowth();?//生成食物
}
if(x==objectXy==objectY){
object=0;
growth=1;
toolkit.beep();
}
//食物坐標(biāo)
if(object==0){
object=1;
objectX=(int)Math.floor(Math.random()*39)*10;
objectY=(int)Math.floor(Math.random()*29)*10+50;
}
this.repaint();?//重新生成食物
}
}
void?isDead(){
//判斷游戲是否結(jié)束的方法
if(z==4){?//Z代表蛇的移動(dòng)方向?x?y代表物體坐標(biāo)?設(shè)置了x?y?窗口大小(判斷蛇是否吃到食物)
x=x+10;
}else?if(z==3){
x=x-10;
}else?if(z==2){
y=y+10;
}else?if(z==1){
y=y-10;
}
if(x0||x390||y50||y390){?//判斷是否撞墻
she=null;
}
for(i=1;ilength;i++){
if(m[i]==xn[i]==y){
she=null;
}
}
}
public?void?upgrowth(){
//當(dāng)蛇吃到東西時(shí)的方法
if(length50){
length++;?//長度累加
}
growth--;
time=time-10;?//當(dāng)蛇吃到一個(gè)?時(shí)間打九折?懂????吃的越多蛇運(yùn)動(dòng)的越快
reform();
life+=100;
if(fenshulife){
fenshu?=?life;//分?jǐn)?shù)就是吃一個(gè)食物給一百分。。。
}
foods++;
}
public?void?reform(){
for(i=length-1;i0;i--){?//?更新蛇的每一節(jié)坐標(biāo)?依次把前一節(jié)付給下一節(jié)移動(dòng)坐標(biāo)
m[i]=m[i-1];
n[i]=n[i-1];
}
if(z==4){
m[0]=m[0]+10;
}
if(z==3){
m[0]=m[0]-10;
}
if(z==2){
n[0]=n[0]+10;
}
if(z==1){
n[0]=n[0]-10;
}
}
public?void?keyPressed(KeyEvent?e){?//按下鍵盤方向鍵
//?z代表蛇的移動(dòng)方向?設(shè)置方向快捷鍵
if(she!=null){
if(e.getKeyCode()==KeyEvent.VK_UP){?//上鍵
if(z!=2){?//先前方向不為左
z=1;
check();
}
}else?if(e.getKeyCode()==KeyEvent.VK_DOWN){?//下
if(z!=1){
z=2;
check();
}
}else?if(e.getKeyCode()==KeyEvent.VK_LEFT){?//左
if(z!=4){
z=3;
check();
}
}else?if(e.getKeyCode()==KeyEvent.VK_RIGHT){?//右
if(z!=3){
z=4;
check();
}
}
}
}
public?void?keyReleased(KeyEvent?e){
}
public?void?keyTyped(KeyEvent?e){
}
//在面板上繪制界面
public?void?paint(Graphics?g)?{
g.setColor(Color.blue);?//設(shè)置背景?顏色
g.fillRect(0,50,400,400);
g.setColor(Color.yellow);//設(shè)置蛇的顏色
for(i=0;i=length-1;i++){
g.fillRect(m[i],n[i],10,10);?//食物的位置
}
g.setColor(Color.green);?//蛇的食物?的顏色
g.fillRect(objectX,objectY,10,10);?//蛇的初始位置
g.setColor(Color.white);
g.drawString("當(dāng)前?分?jǐn)?shù)"+this.life,6,60);
g.drawString("當(dāng)前已吃食物數(shù)"+this.foods,6,72);
}
}