Java 貪吃蛇報(bào)告_第1頁(yè)
Java 貪吃蛇報(bào)告_第2頁(yè)
Java 貪吃蛇報(bào)告_第3頁(yè)
Java 貪吃蛇報(bào)告_第4頁(yè)
Java 貪吃蛇報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Java高級(jí)編程課程報(bào)告第xx小組:貪吃蛇游戲項(xiàng)目小組成員及分工姓名角色負(fù)責(zé)功能組長(zhǎng)設(shè)計(jì)與編碼測(cè)試 主要完成模式選擇窗口和游戲主窗口菜單欄下拉菜單的設(shè)計(jì)與程序編寫(xiě),貪吃蛇游戲界面布局,游戲的操作步驟設(shè)計(jì)。程序的調(diào)試 主要完成游戲主窗口的設(shè)計(jì)與編程,設(shè)計(jì)貪吃蛇的移動(dòng)方向鍵設(shè)置,得分規(guī)則等,以及最后程序的調(diào)試。 主要完成主菜單窗口的設(shè)計(jì)和程序編寫(xiě),界面的設(shè)計(jì)布局,游戲主窗口界面背景設(shè)置,按鈕的圖片設(shè)置等。一、 實(shí)驗(yàn)環(huán)境操作系統(tǒng):Windows 7編程環(huán)境:Eclipse、JDK二、 實(shí)驗(yàn)內(nèi)容與完成情況(主要介紹項(xiàng)目總體功能分析與說(shuō)明。)貪吃蛇小游戲的JAVA程序是利用上 、下 、左、右 方向鍵來(lái)改

2、變蛇的運(yùn)動(dòng)方向,按空鍵暫停游戲,按enter鍵重新開(kāi)始。長(zhǎng)按某個(gè)方向鍵后,蛇的運(yùn)動(dòng)速度會(huì)加快,在隨機(jī)的地方產(chǎn)生食物,吃到食物就變成新的蛇體,碰到壁或自身則游戲結(jié)束,否則正常進(jìn)行游戲。以不同的速度和不同方向吃到食物所獲得的分?jǐn)?shù)也不相同。窗口功能說(shuō)明:設(shè)計(jì)了三個(gè)窗口,分別是游戲主窗口,主菜單窗口,模式選擇窗口。 菜單欄分別為:游戲菜單(重新開(kāi)始)和幫助菜單以及返回(返回主菜單) 。其中,按返回菜單按鈕后會(huì)顯示主菜單,其包括游戲開(kāi)始、設(shè)置、退出游戲三項(xiàng)按鈕選擇;如果按“設(shè)置”按鈕會(huì)進(jìn)入“模式選擇”窗口。而模式選擇窗口菜單包括了初級(jí)、中級(jí)、高級(jí)、返回按鈕。1、功能1(主菜單窗口)(

3、1) 主菜單窗口主要是提供“游戲開(kāi)始”、“設(shè)置”和“退出”按鈕。“游戲開(kāi)始”按鈕按下后會(huì)進(jìn)入“游戲主窗口”開(kāi)始游戲; “設(shè)置”按鈕是調(diào)用“模式選擇”窗口對(duì)游戲貪吃蛇的速度進(jìn)行設(shè)置; “退出”按鈕按下則會(huì)直接退出游戲。(2) 功能1實(shí)現(xiàn)的流程圖實(shí)現(xiàn)的效果圖如下:(3) 功能1(主菜單窗口)代碼:package Swing;import java.awt.Color;import java.awt.EventQueue;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.

4、ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;public class setMenu extends JFrame private int speed1 = 200;public static int speed = 200;/ static int s

5、peed = 20;private JPanel contentPane;/* * Launch the application. */public static void main(String args) EventQueue.invokeLater(new Runnable() public void run() try setMenu frame = new setMenu(speed);frame.SsetMenu(frame);frame.setVisible(true); catch (Exception e) e.printStackTrace(););/* * Create

6、the frame. */public setMenu(int speed2)speed1=speed2;System.out.println(speed2);public void SsetMenu(final setMenu frame) setTitle("主菜單");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100, 100, 250, 350);contentPane = new JPanel();contentPane.setBackground(new Color(102, 204, 10

7、2);contentPane.setBorder(new EmptyBorder(5, 5, 5, 5);setContentPane(contentPane);contentPane.setLayout(null);/按鈕:游戲開(kāi)始JButton NewGameButton = new JButton("");NewGameButton.setIcon(new ImageIcon("img/gamebegin.png");NewGameButton.setBounds(53, 52, 123, 40);NewGameButton.addActionLi

8、stener(new ActionListener() public void actionPerformed(ActionEvent e) Game gs = new Game(speed1);frame.dispose(););contentPane.add(NewGameButton);/按鈕:游戲設(shè)置JButton setButton = new JButton("");setButton.addMouseListener(new MouseAdapter() Overridepublic void mouseClicked(MouseEvent e) model

9、frame1 = new model();frame1.Mmodel(frame1);frame1.setVisible(true);frame.dispose(););/按鈕圖片設(shè)置setButton.setIcon(new ImageIcon("img/set.png");setButton.setBounds(53, 128, 123, 45);contentPane.add(setButton);/按鈕:游戲推出JButton exitButton= new JButton("");exitButton.setIcon(new ImageIcon

10、("img/exit.png");exitButton.setBounds(53, 206, 123, 40);exitButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) System.exit(0););contentPane.add(exitButton);2、功能2(模式選擇窗口)(1) 功能2的文字描述:“模式選擇”窗口菜單包括了初級(jí)、中級(jí)、高級(jí)、返回按鈕。其中當(dāng)選擇按下初級(jí)、中級(jí)、高級(jí)按鈕后,會(huì)彈出一個(gè)“游戲難度“窗口,并提示設(shè)置成功:*,

11、并按下”確定“按鈕后窗口關(guān)閉同時(shí)模式選擇成功,按下”返回“按鈕返回主菜單窗口。(2) 功能2(模式選擇窗口)實(shí)現(xiàn)的流程圖實(shí)現(xiàn)的效果圖如下:(3) 功能2(模式選擇窗口)代碼: package Swing;import java.awt.Color;import java.awt.EventQueue;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFr

12、ame;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;public class setMenu extends JFrame private int speed1 = 200;public static int speed = 200;/ static int speed = 20;private JPanel contentPane;/* * Launch the applic

13、ation. */public static void main(String args) EventQueue.invokeLater(new Runnable() public void run() try setMenu frame = new setMenu(speed);frame.SsetMenu(frame);frame.setVisible(true); catch (Exception e) e.printStackTrace(););/* * Create the frame. */public setMenu(int speed2)speed1=speed2;System

14、.out.println(speed2);public void SsetMenu(final setMenu frame) setTitle("主菜單");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100, 100, 250, 350);contentPane = new JPanel();contentPane.setBackground(new Color(102, 204, 102);contentPane.setBorder(new EmptyBorder(5, 5, 5, 5);setCon

15、tentPane(contentPane);contentPane.setLayout(null);/按鈕:游戲開(kāi)始JButton NewGameButton = new JButton("");NewGameButton.setIcon(new ImageIcon("img/gamebegin.png");NewGameButton.setBounds(53, 52, 123, 40);NewGameButton.addActionListener(new ActionListener() public void actionPerformed(Act

16、ionEvent e) Game gs = new Game(speed1);frame.dispose(););contentPane.add(NewGameButton);/按鈕:游戲設(shè)置JButton setButton = new JButton("");setButton.addMouseListener(new MouseAdapter() Overridepublic void mouseClicked(MouseEvent e) model frame1 = new model();frame1.Mmodel(frame1);frame1.setVisibl

17、e(true);frame.dispose(););/按鈕圖片設(shè)置setButton.setIcon(new ImageIcon("img/set.png");setButton.setBounds(53, 128, 123, 45);contentPane.add(setButton);/按鈕:游戲推出JButton exitButton= new JButton("");exitButton.setIcon(new ImageIcon("img/exit.png");exitButton.setBounds(53, 206, 12

18、3, 40);exitButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) System.exit(0););contentPane.add(exitButton);3、 功能3(貪吃蛇游戲窗口)(1) 能3(貪吃蛇游戲窗口)文字描述:貪吃蛇游戲窗口界面包括蛇體與食物游戲區(qū)域,正上方有即時(shí)計(jì)分框(記錄目前所得的分?jǐn)?shù)),左上角有三個(gè)下拉菜單選項(xiàng)包括“菜單”下拉菜單,“幫助”菜單,“返回”菜單。點(diǎn)擊“菜單”菜單會(huì)出現(xiàn)下拉的“重新開(kāi)始”選項(xiàng)同時(shí)也可以按下Enter鍵重新開(kāi)始游戲

19、;點(diǎn)擊“幫助”菜單會(huì)出現(xiàn)“游戲說(shuō)明”選項(xiàng),點(diǎn)擊進(jìn)入后出現(xiàn)游戲幫助信息;點(diǎn)擊“返回”菜單則直接返回主菜單選擇窗口。貪吃蛇游戲窗口大小是固定的目的是確定并設(shè)置當(dāng)蛇體碰觸到邊框后提示游戲失敗的出框,在規(guī)定的窗口范圍內(nèi)蛇體可以通過(guò)按上 、下 、左、右 方向鍵控制其運(yùn)動(dòng)方向;在吃到界面區(qū)域中出現(xiàn)的食物后蛇體會(huì)變長(zhǎng),而以不同的速度和運(yùn)動(dòng)長(zhǎng)度(UP和DOWN是偶數(shù),RIGHT和LEFT是奇數(shù))所得到的分?jǐn)?shù)也不一樣。按空鍵游戲暫停,按Enter鍵游戲重新開(kāi)始。(2) 功能3現(xiàn)的流程圖:進(jìn)入游戲界面是否按下空鍵可以選擇界面左上角的菜單項(xiàng)鍵盤(pán)操作: 上移、 下移、左移、 右移沒(méi)有吃到食物且蛇碰到邊界或自身蛇體有吃

20、到食物且蛇沒(méi)碰到邊界或自身蛇體單擊“確定”游戲結(jié)束按照不同游戲速度和移動(dòng)長(zhǎng)度計(jì)分并顯示當(dāng)前所得分?jǐn)?shù),游戲繼續(xù)否是點(diǎn)擊”菜單”選項(xiàng)出現(xiàn)“重新開(kāi)始”菜單點(diǎn)擊可以重新開(kāi)始游戲點(diǎn)擊“幫助”菜單出現(xiàn)“游戲說(shuō)明”選項(xiàng)點(diǎn)擊可以查看游戲說(shuō)明點(diǎn)擊“返回”菜單直接返回“主菜單”窗口可以設(shè)置游戲速度和開(kāi)始游戲或退出或按Enter鍵重新開(kāi)始游戲(3) 功能3(貪吃蛇游戲窗口)代碼: package Swing;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.Dimension;im

21、port java.awt.Graphics;import java.awt.Image;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.image.BufferedImage;import java.awt.

22、image.ImageObserver;import java.io.File;import java.io.IOException;import java.util.Arrays;import java.util.Iterator;import java.util.LinkedList;import java.util.Random;import javax.imageio.ImageIO;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenu;import javax.swing.JMenuB

23、ar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JPanel;/Main Classpublic class Game extends KeyAdapter implements ImageObserver /初始速度int speed_all = 200;BufferedImage bgImage=null; JFrame mainFrame; JPanel jPanel; / Canvas paintCanvas; JLabel labelScore;/ 計(jì)分牌 SnakeM

24、odel snakeModel = null;/ 蛇 public static final int DEFAULT_WIDTH = 500; public static final int DEFAULT_HEIGHT = 400; public static final int nodeWidth = 10; public static final int nodeHeight = 10; private JMenuBar menuBar; private JMenu menu; private JMenuItem menuItem; private JMenuBar menuBar_1;

25、 private JMenu mnNewMenu; private JMenu mnNewMenu_1; private JMenuItem mntmNewMenuItem; private JMenuItem mntmNewMenuItem_1; private JMenu mnNewMenu_2; / GreedSnake():初始化游戲界面 public Game(int speed_gs) speed_all=speed_gs; System.out.println("Game:"+speed_all); / 設(shè)置界面元素 mainFrame = new JFram

26、e("貪吃蛇游戲"); Container cp = mainFrame.getContentPane(); aoao(mainFrame); jPanel = new JPanel(); jPanel.setPreferredSize(new Dimension(DEFAULT_WIDTH-10, DEFAULT_HEIGHT-10 );/500*390 / paintCanvas.setSize(DEFAULT_WIDTH + 20, DEFAULT_HEIGHT + 20); jPanel.addKeyListener(this); cp.add(jPanel, Bo

27、rderLayout.CENTER); / cp.add(paintCanvas, BorderLayout.CENTER); JPanel panelButtom = new JPanel(); panelButtom.setLayout(new BorderLayout(); cp.add(panelButtom, BorderLayout.SOUTH); /score labelScore = new JLabel("所得分?jǐn)?shù)為:", JLabel.CENTER); mainFrame.getContentPane().add(labelScore, BorderLa

28、yout.NORTH); mainFrame.addKeyListener(this); mainFrame.pack(); mainFrame.setResizable(false);/ 設(shè)置窗口大小不能變化 mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); mainFrame.setVisible(true); begin(); / keyPressed():按鍵檢測(cè)及菜單設(shè)置 public void aoao(final JFrame mainFrame) mainFrame.setJMenuBar(menuBar); m

29、enuBar_1 = new JMenuBar(); mainFrame.setJMenuBar(menuBar_1); mnNewMenu = new JMenu("菜單"); menuBar_1.add(mnNewMenu); mntmNewMenuItem = new JMenuItem("重新開(kāi)始"); mntmNewMenuItem.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) Game gs = new Game(spe

30、ed_all); mainFrame.dispose(); ); mnNewMenu.add(mntmNewMenuItem); mnNewMenu_1 = new JMenu("幫助"); mnNewMenu_1.addMouseListener(new MouseAdapter() Override public void mouseClicked(MouseEvent e) snakeModel.changePauseState(); ); menuBar_1.add(mnNewMenu_1); mntmNewMenuItem_1 = new JMenuItem(&q

31、uot;游戲說(shuō)明"); mntmNewMenuItem_1.addActionListener(new ActionListener() /游戲說(shuō)明響應(yīng)時(shí)間 public void actionPerformed(ActionEvent arg0) JOptionPane.showMessageDialog(null, "按 控制方向,空格鍵暫停,Enter鍵重新開(kāi)始", "游戲幫助", JOptionPane.INFORMATION_MESSAGE); ); mnNewMenu_1.add(mntmNewMenuItem_1); mnNewM

32、enu_2 = new JMenu("返回"); mnNewMenu_2.addMouseListener(new MouseAdapter() /連接主菜單 Override public void mouseClicked(MouseEvent arg0) setMenu frame123 = new setMenu(speed_all); frame123.SsetMenu(frame123); frame123.setVisible(true); mainFrame.dispose(); /System.out.println("123456")

33、; ); menuBar_1.add(mnNewMenu_2); /鍵盤(pán)響應(yīng)時(shí)間設(shè)置 public void keyPressed(KeyEvent e) int keyCode = e.getKeyCode(); if (snakeModel.running) switch (keyCode) case KeyEvent.VK_UP: snakeModel.changeDirection(SnakeModel.UP); break; case KeyEvent.VK_DOWN: snakeModel.changeDirection(SnakeModel.DOWN); break; case

34、KeyEvent.VK_LEFT: snakeModel.changeDirection(SnakeModel.LEFT); break; case KeyEvent.VK_RIGHT: snakeModel.changeDirection(SnakeModel.RIGHT); break; case KeyEvent.VK_ADD: case KeyEvent.VK_PAGE_UP: snakeModel.speedUp();/ 加速 break; case KeyEvent.VK_SUBTRACT: case KeyEvent.VK_PAGE_DOWN: snakeModel.speedD

35、own();/ 減速 break; case KeyEvent.VK_SPACE: case KeyEvent.VK_P: snakeModel.changePauseState();/ 暫?;蚶^續(xù) break; default: / 重新開(kāi)始 if (keyCode = KeyEvent.VK_S | keyCode = KeyEvent.VK_ENTER) snakeModel.running = false; begin(); / repaint():繪制游戲界面(包括蛇和食物) void repaint() Graphics g = jPanel.getGraphics(); /dra

36、w background /g.drawImage(image, 210, 210, this); /g.setColor(Color.LIGHT_GRAY); try bgImage = ImageIO.read(new File("img/1.jpg"); /將緩沖圖片繪制到窗體中 catch(IOException e) e.printStackTrace(); g.drawImage(bgImage, 0, 0, this); / g.fillRect(10, 0, DEFAULT_WIDTH, DEFAULT_HEIGHT); / draw the snake g

37、.setColor(Color.BLACK); LinkedList na = snakeModel.nodeArray; Iterator it = na.iterator(); while (it.hasNext() Node n = (Node) it.next(); drawNode(g, n); / draw the food g.setColor(Color.RED); Node n = snakeModel.food; drawNode(g, n); updateScore(); / drawNode():繪畫(huà)某一結(jié)點(diǎn)(蛇身或食物) private void drawNode(G

38、raphics g, Node n) g.fillRect(n.x * nodeWidth, n.y * nodeHeight, nodeWidth - 1, nodeHeight - 1); / updateScore():改變計(jì)分牌 public void updateScore() String s = "所得分?jǐn)?shù)為: " + snakeModel.score; labelScore.setText(s); / begin():游戲開(kāi)始,放置貪吃蛇 void begin() if (snakeModel = null | !snakeModel.running) sn

39、akeModel = new SnakeModel(this, DEFAULT_WIDTH / nodeWidth, DEFAULT_HEIGHT / nodeHeight,speed_all); (new Thread(snakeModel).start(); / main():主函數(shù) public static void main(String args) Game gs = new Game(200); Overridepublic boolean imageUpdate(Image arg0, int arg1, int arg2, int arg3,int arg4, int arg

40、5) / TODO Auto-generated method stubreturn false;/ Node:結(jié)點(diǎn)類(lèi)class Node int x; int y; Node(int x, int y) this.x = x; this.y = y; / SnakeModel:貪吃蛇模型class SnakeModel implements Runnable Game gs; boolean matrix;/ 界面數(shù)據(jù)保存在數(shù)組里 LinkedList nodeArray = new LinkedList(); Node food; int maxX;/ 最大寬度 int maxY;/ 最大

41、長(zhǎng)度 int direction = 2;/ 方向 boolean running = false; int timeInterval = 200;/ 間隔時(shí)間(速度) double speedChangeRate = 0.75;/ 速度改變程度 boolean paused = false;/ 游戲狀態(tài) int score = 0; int countMove = 0; / UP和DOWN是偶數(shù),RIGHT和LEFT是奇數(shù) public static final int UP = 2; public static final int DOWN = 4; public static final

42、 int LEFT = 1; public static final int RIGHT = 3; / GreedModel():初始化界面 public SnakeModel(Game gs, int maxX, int maxY,int speed_snake) timeInterval = speed_snake;/速度 this.gs = gs; this.maxX = maxX; this.maxY = maxY; matrix = new booleanmaxX; for (int i = 0; i < maxX; +i) matrixi = new booleanmaxY;

43、 Arrays.fill(matrixi, false);/ 沒(méi)有蛇和食物的地區(qū)置false / 初始化貪吃蛇 int initArrayLength = maxX > 20 ? 10 : maxX / 2;/蛇頭位置,長(zhǎng)度 /System.out.println(initArrayLength); for (int i = 0; i < initArrayLength; +i) int x = maxX / 2 + i; / System.out.println(x); int y = maxY / 2; / System.out.println(y); nodeArray.ad

44、dLast(new Node(x, y); matrixxy = true;/ 蛇身處置true food = createFood(); matrixfood.xfood.y = true;/ 食物處置true / changeDirection():改變運(yùn)動(dòng)方向 public void changeDirection(int newDirection) if (direction % 2 != newDirection % 2) / 檢查方向沖突 direction = newDirection; / moveOn():貪吃蛇運(yùn)動(dòng)函數(shù) public boolean moveOn() Nod

45、e n = (Node) nodeArray.getFirst();/獲取蛇頭的位置 int x = n.x; int y = n.y; / System.out.println(x); /System.out.println(y); switch (direction) case UP: y-; break; case DOWN: y+; break; case LEFT: x-; break; case RIGHT: x+; break; if (0 <= x && x < maxX) && (0 <= y && y <

46、; maxY) /System.out.println("asd"); if (matrixxy) / 吃到食物或者撞到身體 if (x = food.x && y = food.y) / 吃到食物 System.out.println("eat"); nodeArray.addFirst(food);/ 在頭部加上一結(jié)點(diǎn) / 計(jì)分規(guī)則與移動(dòng)長(zhǎng)度和速度有關(guān) int scoreGet = (10000 - 200 * countMove) / timeInterval; score += scoreGet > 0 ? scoreGet

47、 : 10; countMove = 0; food = createFood(); matrixfood.xfood.y = true; return true; else return false;/ 撞到身體 else / 什么都沒(méi)有碰到 nodeArray.addFirst(new Node(x, y);/ 加上頭部 matrixxy = true; n = (Node) nodeArray.removeLast();/ 去掉尾部 matrixn.xn.y = false; countMove+; return true; return false;/ 越界(撞到墻壁) / run():貪吃蛇運(yùn)動(dòng)線(xiàn)程 public void run() running = true; while (running) try Thread.sleep(timeInterval); catch (Exception e) break; if (!paused)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論