يدعم إصدار Java من لعبة Snake التي كتبت على محمل الجد ، مع واجهة رسومية ، تشغيل القائمة ، ومراقبة لوحة المفاتيح ، ويمكن أن تتسارع ، والمعتاد ، العد ، وسرعة الحركة ، بلون خلفية اللعبة ، وما إلى ذلك! لا ينبغي أن يكون هناك أخطاء ، لأنني قمت بتعديلها تمامًا.
فيما يلي العلاقة الهرمية بين الحزم وفئات المشروع المختلفة:
وترد الواجهة الرئيسية للعبة أدناه:
فيما يلي بعض الرموز. راجع هذا الرابط للحصول على رمز المصدر التفصيلي: قم بتنزيل رمز المصدر للثعبان الجشع
فئة الأفعى:
حزمة com.huowolf.entities ؛ استيراد java.awt.color ؛ استيراد java.awt.graphics ؛ استيراد java.awt.point ؛ استيراد java.util.hashset ؛ استيراد java.util.linkedList ؛ استيراد java.util.set ؛ استيراد com.huowolf.listener.snakelistener ؛ استيراد com.huowolf.util.global ؛ Snake الطبقة العامة {// ثابت تمثل الاتجاه العام الثابت النهائي int up = 1 ؛ نهائي ثابت للجمهور Down = -1 ؛ غادرت int الثابتة العامة = 2 ؛ الثابتة العامة النهائية int اليمين = -2 ؛ // Liser Group Private Set <SnakeListener> المستمعين = new hashset <SnakeListener> () ؛ // هيكل قائمة التخزين LinkedList <Point> body = New LinkedList <Point> () ؛ الحياة المنطقية الخاصة // هو توقف منطقي خاص على قيد الحياة. // هل اللعبة الخاصة int olddirection ، NewDirection ؛ // إدخال اتجاهات جديدة وقديمة (تجنب الاتجاهات غير الصالحة في غضون وقت التحرك) Private Point Old. // الذيل القديم (يستخدم عند تناول الطعام) private int foodcount = 0 ؛ // كمية الأطعمة ذات اللون الخاص بالألوان الخاصة ؛ لون الجسم الخاص بالألوان. Private Int Sleeptime ؛ iSlife boolean العامة () {return life ؛ } public int getleeptime () {return sleeptime ؛ } public void setSleeptime (int sleeptime) {this.sleeptime = sleeptime ؛ } public void setheadcolor (color headcolor) {this.headcolor = headColor ؛ } public void setbodyColor (color bodycolor) {this.bodyColor = bodyColor ؛ } public void init () {int x = global.width/2 ؛ int y = global.hight/2 ؛ لـ (int i = 0 ؛ i <3 ؛ i ++) {body.addlast (نقطة جديدة (x-، y)) ؛ } OldDirection = newDirection = right ؛ FoodCount = 0 ؛ الحياة = صحيح ؛ وقفة = خطأ ؛ if (sleeptime == 0) {sleeptime = 300 ؛ }} // طريقة لمسح عقد الأفعى (المستخدمة لبدء لعبة جديدة) void public clear () {body.clear () ؛ } public void setlife (life boolean) {this.life = life ؛ } getPause getPause () {return pause ؛ } public void setPause (pause baolean) {this.pause = apave ؛ } // طريقة لتغيير حالة الثوابت الموقوفة public void changepause () {pause =! pause ؛ } // طريقة الموت من أجل Snake Public void die () {life = false ؛ } // طريقة لتحريك public void move () {if (! (OldDirection + newDirection == 0)) {OldDirection = newDirection ؛ } // التفاصيل القديمة = body.removelast () ؛ int x = body.getFirst (). x ؛ int y = body.getFirst (). y ؛ Switch (OldDirection) {case Up: y-- ؛ if (y <0) {y = global.height -1 ؛ } استراحة؛ القضية لأسفل: y ++ ؛ if (y> = global.height) {y = 0 ؛ } استراحة؛ القضية اليسار: x-- ؛ if (x <0) {x = global.width-1 ؛ } استراحة؛ الحالة اليمنى: x ++ ؛ if (x> = global.width) {x = 0 ؛ } استراحة؛ } point newhead = new point (x ، y) ؛ // إضافة الرأس body.addfirst (Newhead) ؛ }. }. FoodCount ++ ؛ } // احصل على كمية الطعام الذي تتناوله العام int getFoodCount () {return foodcount ؛ } // هل الأفعى يأكل جسدها المنطقي العام () {for (int i = 1 ؛ i <body.size () ؛ i ++) {if (body.get (i) .equals (this.gethead ())) إرجاع true ؛ } إرجاع خطأ ؛ } // احصل على العقدة التي تمثل رأس Snake's Public Point Gethead () {return body.getFirst () ؛ }. } آخر {g.setColor (bodyColor) ؛ } لـ (point p: body) {g.fillRoundRect (px*global.cell_size ، py*global.cell_size ، global.cell_size ، global.cell_size ، global.cell_size ، 15،12) ؛ } drawhead (g) ؛ }. else {g.setColor (headcolor) ؛ } G.FillRoundRect (gethead (). x * global.cell_size ، gethead (). }. لـ (SnakeListener L: المستمعون) L.SnakeMoved (Snake.This) ؛ } جرب {thread.sleep (sleeptime) ؛ } catch (interruptedException e) {E.PrintStackTrace () ؛ }}}}} // method لبدء تشغيل موضوع الفراغ العام () {new thread (new snakedRiver ()). start () ؛ }. }} // تسريع public void speedup () {if (sleeptime> 50) {sleeptime- = 20 ؛ }} // إبطاء public void speeddown () {if (sleeptime <700) {sleeptime+= 20 ؛ }}}فئة الطعام:
حزمة com.huowolf.entities ؛ استيراد java.awt.color ؛ استيراد java.awt.graphics ؛ استيراد java.awt.point ؛ استيراد com.huowolf.util.global ؛ يمتد طعام الطبقة العامة النقطة {Private Static Final Long SerialVersionuid = 1L ؛ ألوان خاصة بالألوان. public void setFoodColor (color foodcolor) {this.foodColor = foodColor ؛ } اللون العام getFoodColor () {return FoodColor ؛ } public void newfood (point p) {setLocation (p) ؛ } isfoodeated isfoodeated (ثعبان الأفعى) {return this.equals (snake.gethead ()) ؛ } public void drawme (Graphics g) {if (foodColor == null) {g.setColor (color.red) ؛ } آخر {g.setColor (FoodColor) ؛ } g.fill3drect (x*global.cell_size ، y*global.cell_size ، global.cell_size ، global.cell_size ، true) ؛ }}الطبقة الأرضية
حزمة com.huowolf.entities ؛ استيراد java.awt.color ؛ استيراد java.awt.graphics ؛ استيراد java.awt.point ؛ استيراد java.util.random ؛ استيراد com.huowolf.util.global ؛ Gublic Class Ground {Private Boolean [] [] Rocks = New Boolean [Global.Width] [Global.Height] ؛ private int maptype = 1 ؛ public int getMaptype () {return maptype ؛ } public void setMapType (int maptype) {this.maptype = maptype ؛ } // تهيئة الأرض (مسح الحجر) باطل عام clear () {for (int x = 0 ؛ x <global.width ؛ x ++) لـ (int y = 0 ؛ y <global.height ؛ y ++) الصخور [x] [y] = false ؛ } / *** إنشاء Stone* / public void generaterocks1 () {for (int x = 0 ؛ x <global.width ؛ x ++) rocks [x] [0] = rocks [x] [global.hight - 1] = true ؛ لـ (int y = 0 ؛ y <global.hight ؛ y ++) الصخور [0] [y] = الصخور [global.width - 1] [y] = true ؛ } public void generaterocks2 () {for (int y = 0 ؛ y <6 ؛ y ++) {rocks [0] [y] = true ؛ الصخور [global.width - 1] [y] = true ؛ الصخور [0] [global.hight - 1 - y] = true ؛ الصخور [global.width - 1] [Global.Height - 1 - y] = true ؛ } لـ (int y = 6 ؛ y <global.height - 6 ؛ y ++) {rocks [6] [y] = true ؛ الصخور [global.width - 7] [y] = true ؛ }} public void generaterocks3 () {for (int x = 4 ؛ x <14 ؛ x ++) rocks [x] [5] = true ؛ لـ (int j = 5 ؛ j <15 ؛ j ++) الصخور [21] [j] = true ؛ لـ (int y = 13 ؛ y <20 ؛ y ++) الصخور [14] [y] = true ؛ لـ (int x = 2 ؛ x <10 ؛ x ++) الصخور [x] [17] = true ؛ لـ (int i = 10 ؛ i <global.width-3 ؛ i ++) الصخور [i] [global.hight-3] = true ؛ } // هل الأفعى يأكل الحجر المنطقي العام isgroundeed (ثعبان الأفعى) {for (int x = 0 ؛ x <global.width ؛ x ++) {for (int y = 0 ؛ y <global.height ؛ y ++) {if (rocks [y] == true && (x == snake.gethead () حقيقي؛ }} إرجاع خطأ ؛ } Public Point GetPoint () {Random Random = new Random () ؛ int x = 0 ، y = 0 ؛ do {x = random.nextint (global.width) ؛ y = random.nextint (global.hight) ؛ } بينما (الصخور [x] [y] == true) ؛ إرجاع نقطة جديدة (x ، y) ؛ } // طريقة العرض public void drawme (Graphics g) {g.setColor (color.dark_gray) ؛ لـ (int x = 0 ؛ x <global.width ؛ x ++) {for (int y = 0 ؛ y <global.height ؛ y ++) {if (rocks [x] [y] == true) {g.fill3drect (x*global.cell_size ، y*global.cell_size ، global.cell_size ، global.cell_size ، }}}}}}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.