网上有关闲来贵州麻将看牌器(详细开挂教程)

06-20 47阅读

网上有关“求c语言的贪吃蛇的代码 能运行的”话题很是火热,小编也是针对求c语言的贪吃蛇的代码 能运行的寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。

您好:手机麻将有挂是真的吗这款游戏可以开挂,确实是有挂的,咨询加微信【】很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游戏是不是有挂,实际上这款游戏确实是有挂的
http://www.boyicom.net/sheng/1.jpg
1.手机麻将有挂是真的吗这款游戏可以开挂,确实是有挂的,通过添加客服微信 2.咨询软件加微信【】在"设置DD功能DD微信手麻工具"里.点击"开启". 3.打开工具.在"设置DD新消息提醒"里.前两个选项"设置"和"连接软件"均勾选"开启"(好多人就是这一步忘记做了) 4.打开某一个微信组.点击右上角.往下拉."消息免打扰"选项.勾选"关闭"(也就是要把"群消息的提示保持在开启"的状态.这样才能触系统发底层接口)

//?ConsoleApplication1.cpp:?定义控制台应用程序的入口点。

//

#include?"stdafx.h"

#include?<stdio.h>

#include?<windows.h>

#include?<time.h>

#include?<conio.h>

#define?frame_height?20?//define?map?size

#define?frame_width?40

#define?UP?'w'?//define?operate?key

#define?DOWN?'s'

#define?LEFT?'a'

#define?RIGHT?'d'

int?i,?j,?k;

char?ch?=?UP;?//initial?direction

int?grow?=?0;?//flag:?if?snake?grow

struct?Food?{

int?x;

int?y;

}food;

struct?Snake?{

int?x[50];

int?y[50];

int?len;

int?speed;

}snake;?//snake[0]?is?head

void?init_map(void);

void?update_food(void);

void?move_snake(void);

int?is_alive(void);

void?get_speed(void);

void?gotoxy(int?x,?int?y);

int?main()

{

init_map();//初始化地图

while?(1)

{

update_food();

//是否产生食物

get_speed();//获取速度

move_snake();//移动蛇身

Sleep(snake.speed);

//移动速度

if?(!(is_alive()))

//蛇的死活(撞墙或自食)

break;

}

printf("Game?Over!");

_getch();

return?0;

}

//initialize

void?init_map(void)

{

//initial?food

srand(time(NULL));

food.x?=?rand()?%?(frame_height?-?2)?+?1;

food.y?=?rand()?%?(frame_width?-?2)?+?1;

gotoxy(food.x,?food.y);

printf("!");

//initial?snake

snake.x[0]?=?frame_height?/?2;

snake.y[0]?=?frame_width?/?2;

gotoxy(snake.x[0],?snake.y[0]);

printf("@");

snake.len?=?3;

snake.speed?=?200;

for?(k?=?1;?k<snake.len;?k++)

{

snake.x[k]?=?snake.x[k?-?1]?+?1;

snake.y[k]?=?snake.y[k?-?1];

gotoxy(snake.x[k],?snake.y[k]);

printf("@");

}

//initial?bar

for?(j?=?0;?j<frame_width;?j++)

{

gotoxy(0,?j);

printf("#");

gotoxy(frame_height?-?1,?j);

printf("#");

}

for?(i?=?1;?i<frame_height?-?1;?i++)

{

gotoxy(i,?0);

printf("#");

gotoxy(i,?frame_width?-?1);

printf("#");

}

}

//generate?food

void?update_food()

{

if?(snake.x[0]?==?food.x&&snake.y[0]?==?food.y)

{

srand(time(NULL));

food.x?=?rand()?%?(frame_height?-?2)?+?1;

food.y?=?rand()?%?(frame_width?-?2)?+?1;

gotoxy(food.x,?food.y);

printf("!");

snake.len++;

grow?=?1;

}

}

//move?snake

void?move_snake()

{

if?(_kbhit())

ch?=?_getch();

if?(!grow)

{

gotoxy(snake.x[snake.len?-?1],?snake.y[snake.len?-?1]);

printf("?");

}

for?(k?=?snake.len?-?1;?k>0;?k--)

{

snake.x[k]?=?snake.x[k?-?1];

snake.y[k]?=?snake.y[k?-?1];

}

switch?(ch)

{

case?UP:snake.x[0]--;?break;

case?DOWN:snake.x[0]++;?break;

case?LEFT:snake.y[0]--;?break;

case?RIGHT:snake.y[0]++;?break;

default:break;

}

gotoxy(snake.x[0],?snake.y[0]);

printf("@");

grow?=?0;

gotoxy(frame_height,?0);

}

//is?alive

int?is_alive(void)

{

if?(snake.x[0]?==?0?||?snake.x[0]?==?frame_height?-?1?||?snake.y[0]?==?frame_width?-?1?||?snake.y[0]?==?0)

return?0;

for?(k?=?1;?k<snake.len;?k++)

if?(snake.x[k]?==?snake.x[0]?&&?snake.y[k]?==?snake.y[0])

return?0;

return?1;

}

//speed?up

void?get_speed(void)

{

if?(snake.len?<=?6)

snake.speed?=?200;

else?if?(snake.len?<=?10)

snake.speed?=?100;

else?if?(snake.len?<=?20)

snake.speed?=?50;

else?if?(snake.len?<=?30)

snake.speed?=?30;

else?snake.speed?=?20;

}

//move?cursor

void?gotoxy(int?x,?int?y)

{

HANDLE?hout;

COORD?cor;

hout?=?GetStdHandle(STD_OUTPUT_HANDLE);

cor.X?=?y;

cor.Y?=?x;

SetConsoleCursorPosition(hout,?cor);

}

求用vbs编写的贪吃蛇源代码

代码如下:

#include<iostream>

#include<windows.h>

#include<time.h>

#include<conio.h>

using namespace std;

// 刷新当前屏幕

inline void Refresh(char q[][22], int grade, int gamespeed){

system("cls"); // 清屏

int i,j;

cout << endl;

for(i=0;i<22;i++){

cout << "\t";

for(j=0;j<22;j++)

cout<<q[i][j]<<' '; // 输出贪吃蛇棋盘

if(i==0) cout << "\t等级为:" << grade;

if(i==4) cout << "\t自动前进时间";

if(i==6) cout << "\t间隔为:" << gamespeed << "ms";

cout<<endl;

}

}

int main(){

char tcsQipan[22][22]; // 贪吃蛇棋盘是一个二维数组(如22*22,包括墙壁)

int i,j;

for(i=1;i<=20;i++)

for(j=1;j<=20;j++)

tcsQipan[i][j]=' '; // 初始化贪吃蛇棋盘中间空白部分

for(i=0;i<=21;i++)

tcsQipan[0][i] = tcsQipan[21][i] = '-'; //初始化贪吃蛇棋盘上下墙壁

for(i=1;i<=20;i++)

tcsQipan[i][0] = tcsQipan[i][21] = '|'; //初始化贪吃蛇棋盘左右墙壁

int tcsZuobiao[2][100]; //蛇的坐标数组

for(i=0; i<4; i++){

tcsZuobiao[0][i] = 1;

tcsZuobiao[1][i] = i + 1;

}

int head = 3,tail = 0;

for(i=1;i<=3;i++)

tcsQipan[1][i]='*'; //蛇身

tcsQipan[1][4]='#'; //蛇头

int x1, y1; // 随机出米

srand(time(0));

do{

x1=rand()%20+1;

y1=rand()%20+1;

}while(tcsQipan[x1][y1]!=' ');

tcsQipan[x1][y1]='*';

cout<<"\n\n\t\t贪吃蛇游戏即将开始 !"<<endl;//准备开始;;

long start;

int grade = 1, length = 4;

int gamespeed = 500; //前进时间间隔

for(i=3;i>=0;i--){

start=clock();

while(clock()-start<=1000);

system("cls");

if(i>0)

cout << "\n\n\t\t进入倒计时:" << i << endl;

else

Refresh(tcsQipan,grade,gamespeed);

}

int timeover;

char direction = 77; // 初始情况下,向右运动

int x,y;

while(1){

timeover = 1;

start = clock();

while((timeover=(clock()-start<=gamespeed))&&!kbhit());

//如果有键按下或时间超过自动前进时间间隔则终止循环

if(timeover){

getch();direction = getch();

}

switch(direction){

case 72: x= tcsZuobiao[0][head]-1; y= tcsZuobiao[1][head];break; // 向上

case 80: x= tcsZuobiao[0][head]+1; y= tcsZuobiao[1][head];break; // 向下

case 75: x= tcsZuobiao[0][head]; y= tcsZuobiao[1][head]-1;break; // 向左

case 77: x= tcsZuobiao[0][head]; y= tcsZuobiao[1][head]+1; // 向右

}

if(!(direction==72||direction==80||direction==75 ||direction==77)){ // 按键非方向键

cout << "\tGame over!" << endl; system("pause");return 0;

}

if(x==0 || x==21 ||y==0 || y==21){ // 碰到墙壁

cout << "\tGame over!" << endl; system("pause");return 0;

}

if(tcsQipan[x][y]!=' '&&!(x==x1&&y==y1)){ // 蛇头碰到蛇身

cout << "\tGame over!" << endl; system("pause");return 0;

}

if(x==x1 && y==y1){ // 吃米,长度加1

length ++;

if(length>=8){

length -= 8;

grade ++;

if(gamespeed>=200)

gamespeed = 550 - grade * 50; // 改变自动前进时间间隔

}

tcsQipan[x][y]= '#';

tcsQipan[tcsZuobiao[0][head]][tcsZuobiao[1][head]] = '*';

head = (head+1)%100;

tcsZuobiao[0][head] = x;

tcsZuobiao[1][head] = y;

do

{

x1=rand()%20+1;

y1=rand()%20+1;

}while(tcsQipan[x1][y1]!=' ');

tcsQipan[x1][y1]='*';

Refresh(tcsQipan,grade,gamespeed);

}

else{ // 不吃米

tcsQipan [tcsZuobiao[0][tail]][tcsZuobiao[1][tail]]=' ';

tail=(tail+1)%100;

tcsQipan [tcsZuobiao[0][head]][tcsZuobiao[1][head]]='*';

head=(head+1)%100;

tcsZuobiao[0][head]=x;

tcsZuobiao[1][head]=y;

tcsQipan[tcsZuobiao[0][head]][tcsZuobiao[1][head]]='#';

Refresh(tcsQipan,grade,gamespeed);

}

}

system("pause");

return 0;

}

贪吃蛇 java代码

需用VB实现,代码如下

'定义蛇的运动速度枚举值

Private Enum tpsSpeed

QUICKLY = 0

SLOWLY = 1

End Enum

'定义蛇的运动方向枚举值

Private Enum tpsDirection

D_UP = 38

D_DOWN = 40

D_LEFT = 37

D_RIGHT = 39

End Enum

'定义运动区域4个禁区的枚举值

Private Enum tpsForbiddenZone

FZ_TOP = 30

FZ_BOTTOM = 5330

FZ_LEFT = 30

FZ_RIGHT = 5730

End Enum

'定义蛇头及身体初始化数枚举值

Private Enum tpsSnake

SNAKEONE = 1

SNAKETWO = 2

SNAKETHREE = 3

SNAKEFOUR = 4

End Enum

'定义蛇宽度的常量

Private Const SNAKEWIDTH As Integer = 100

'该过程用于显示游戏信息

Private Sub Form_Load()

Me.Show

Me.lblTitle = "BS贪食蛇 — (版本 " & App.Major & "." & App.Minor & "." & App.Revision & ")"

Me.Caption = Me.lblTitle.Caption

frmSplash.Show 1

End Sub

'该过程用于使窗体恢复原始大小

Private Sub Form_Resize()

If Me.WindowState <> 1 Then

Me.Caption = ""

Me.Height = 6405 '窗体高度为 6405 缇

Me.Width = 8535 '窗体宽度为 8535 缇

Me.Left = (Screen.Width - Width) \ 2

Me.Top = (Screen.Height - Height) \ 2

End If

End Sub

'该过程用于重新开始开始游戏

Private Sub cmdGameStart_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

Beep

msg = MsgBox("您确认要重新开始游戏吗?", 4 + 32, "BS贪食蛇")

If msg = 6 Then Call m_subGameInitialize

End Sub

'该过程用于暂停/运行游戏

Private Sub chkPause_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Me.chkPause.Caption = "暂停游戏(&P)" Then

Me.tmrSnakeMove.Enabled = False

Me.tmrGameTime.Enabled = False

Me.picMoveArea.Enabled = False

Me.lblPauseLab.Visible = True

Me.chkPause.Caption = "继续游戏(&R)"

Else

Me.tmrSnakeMove.Enabled = True

Me.tmrGameTime.Enabled = True

Me.picMoveArea.Enabled = True

Me.lblPauseLab.Visible = False

Me.chkPause.Caption = "暂停游戏(&P)"

End If

End Sub

'该过程用于显示游戏规则

Private Sub cmdGameRules_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

Beep

MsgBox " BS贪食蛇:一个规则最简单的趣味游戏,您将用键盘" & Chr(13) & _

"上的4个方向键来控制蛇的运动方向。在运动过程中蛇" & Chr(13) & _

"不能后退,蛇的头部也不能接触到运动区域的边线以外" & Chr(13) & _

"和蛇自己的身体,否则就游戏失败。在吃掉随机出现的" & Chr(13) & _

"果子后,蛇的身体会变长,越长难度越大。祝您好运!!", 0 + 64, "游戏规则"

End Sub

'该过程用于显示游戏开发信息

Private Sub cmdAbout_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

Beep

MsgBox "BS贪食蛇" & "(V-" & App.Major & "." & App.Minor & "版本)" & Chr(13) & Chr(13) & _

"" & Chr(13) & Chr(13) & _

"由PigheadPrince设计制作" & Chr(13) & _

"CopyRight(C)2002,BestSoft.TCG", 0, "关于本游戏"

End Sub

'该过程用于退出游戏

Private Sub cmdExit_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

Beep

msg = MsgBox("您要退出本游戏吗?", 4 + 32, "BS贪食蛇")

Select Case msg

Case 6

End

Case 7

Me.chkWindowButton(2).Value = 0

Exit Sub

End Select

End Sub

'该过程用于拖动窗体_(点击图标)

Private Sub imgWindowTop_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

ReleaseCapture

SendMessage Me.hwnd, WM_SYSCOMMAND, SC_MOVE, 0

End Sub

'该共用过程用于处理窗体控制按钮组的相关操作_(锁定、最小化、退出)

Private Sub chkWindowButton_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)

If Button <> 1 Then Exit Sub

Select Case Index

Case 0 '锁定窗体

If Me.chkWindowButton(0).Value = 1 Then

Me.imgWindowTop.BorderStyle = 0

Me.imgWindowTop.Enabled = False

Else

Me.imgWindowTop.BorderStyle = 1

Me.imgWindowTop.Enabled = True

End If

Case 1 '最小化

Me.WindowState = 1

Me.chkWindowButton(1).Value = 0

Me.Caption = "BS贪食蛇 — (V-" & App.Major & "." & App.Minor & "版本)"

Case 2 '退出

Beep

msg = MsgBox("您要退出本游戏吗?", 4 + 32, "BS贪食蛇")

Select Case msg

Case 6

End

Case 7

Me.chkWindowButton(2).Value = 0

Exit Sub

End Select

End Select

End Sub

'该过程用于设置蛇运动速度的快慢

Private Sub hsbGameSpeed_Change()

Me.tmrSnakeMove.Interval = Me.hsbGameSpeed.Value

End Sub

'该过程用于通过键盘的方向键改变蛇的运动方向

Private Sub picMoveArea_KeyDown(KeyCode As Integer, Shift As Integer)

Select Case g_intDirection

Case D_UP

If KeyCode = D_DOWN Then Exit Sub

Case D_DOWN

If KeyCode = D_UP Then Exit Sub

Case D_LEFT

If KeyCode = D_RIGHT Then Exit Sub

Case D_RIGHT

If KeyCode = D_LEFT Then Exit Sub

End Select

g_intDirection = KeyCode

End Sub

'该计时循环过程用于计算游戏耗费的秒数并显示

Private Sub tmrGameTime_Timer()

g_lngGameTime = g_lngGameTime + 1

Me.lblGameTime.Caption = g_lngGameTime & "秒"

End Sub

'该计时循环过程用于控制蛇的行动轨迹

Private Sub tmrSnakeMove_Timer()

Dim lngSnakeX As Long, lngSnakeY As Long, lngSnakeColor As Long

Dim lngPointX As Long, lngPointY As Long, lngPointColor As Long

Randomize

Me.picMoveArea.SetFocus

Me.picMoveArea.Cls

'确认蛇头的运动方向并获取新的位置

Select Case g_intDirection

Case D_UP '向上运动

g_udtSnake(SNAKEONE).Snake_CurX = g_udtSnake(SNAKEONE).Snake_OldX

g_udtSnake(SNAKEONE).Snake_CurY = g_udtSnake(SNAKEONE).Snake_OldY

g_udtSnake(SNAKEONE).Snake_CurY = g_udtSnake(SNAKEONE).Snake_CurY - SNAKEWIDTH

Case D_DOWN '向下运动

g_udtSnake(SNAKEONE).Snake_CurX = g_udtSnake(SNAKEONE).Snake_OldX

g_udtSnake(SNAKEONE).Snake_CurY = g_udtSnake(SNAKEONE).Snake_OldY

g_udtSnake(SNAKEONE).Snake_CurY = g_udtSnake(SNAKEONE).Snake_CurY + SNAKEWIDTH

Case D_LEFT '向左运动

g_udtSnake(SNAKEONE).Snake_CurX = g_udtSnake(SNAKEONE).Snake_OldX

g_udtSnake(SNAKEONE).Snake_CurX = g_udtSnake(SNAKEONE).Snake_CurX - SNAKEWIDTH

g_udtSnake(SNAKEONE).Snake_CurY = g_udtSnake(SNAKEONE).Snake_OldY

Case D_RIGHT '向右运动

g_udtSnake(SNAKEONE).Snake_CurX = g_udtSnake(SNAKEONE).Snake_OldX

g_udtSnake(SNAKEONE).Snake_CurX = g_udtSnake(SNAKEONE).Snake_CurX + SNAKEWIDTH

g_udtSnake(SNAKEONE).Snake_CurY = g_udtSnake(SNAKEONE).Snake_OldY

End Select

'根据新的位置绘制蛇头

lngSnakeX = g_udtSnake(SNAKEONE).Snake_CurX

lngSnakeY = g_udtSnake(SNAKEONE).Snake_CurY

lngSnakeColor = g_udtSnake(SNAKEONE).Snake_Color

Me.picMoveArea.PSet (lngSnakeX, lngSnakeY), lngSnakeColor

'移动蛇身体其他部分的位置

For i = 2 To g_intSnakeLength

g_udtSnake(i).Snake_CurX = g_udtSnake(i - 1).Snake_OldX

g_udtSnake(i).Snake_CurY = g_udtSnake(i - 1).Snake_OldY

lngSnakeX = g_udtSnake(i).Snake_CurX

lngSnakeY = g_udtSnake(i).Snake_CurY

lngSnakeColor = g_udtSnake(i).Snake_Color

Me.picMoveArea.PSet (lngSnakeX, lngSnakeY), lngSnakeColor

Next i

'更新蛇旧的坐标位置

For j = 1 To g_intSnakeLength

g_udtSnake(j).Snake_OldX = g_udtSnake(j).Snake_CurX

g_udtSnake(j).Snake_OldY = g_udtSnake(j).Snake_CurY

Next j

'判断蛇在移动中是否到了禁区而导致游戏失败

If m_funMoveForbiddenZone(g_udtSnake(SNAKEONE).Snake_CurX, g_udtSnake(SNAKEONE).Snake_CurY) Then

Beep

MsgBox "您的蛇移动到了禁区,游戏失败!", 0 + 16, "BS贪食蛇"

Me.tmrSnakeMove.Enabled = False

Me.tmrGameTime.Enabled = False

Me.picMoveArea.Visible = False

Exit Sub

End If

'判断蛇在移动中是否碰到了自己的身体而导致游戏失败

If m_funTouchSnakeBody(g_udtSnake(SNAKEONE).Snake_CurX, g_udtSnake(SNAKEONE).Snake_CurY) Then

Beep

MsgBox "您的蛇在移动中碰到了自己的身体,游戏失败!", 0 + 16, "BS贪食蛇"

Me.tmrSnakeMove.Enabled = False

Me.tmrGameTime.Enabled = False

Me.picMoveArea.Visible = False

Exit Sub

End If

'判断蛇是否吃到了果子

If m_funEatPoint(g_udtSnake(SNAKEONE).Snake_CurX, g_udtSnake(SNAKEONE).Snake_CurY) Then

'累加玩家的得分并刷新得分显示

g_intPlayerScore = g_intPlayerScore + 1

Me.lblYourScore.Caption = g_intPlayerScore & "分"

Call m_subAddSnake '加长蛇的身体

Call m_subGetPoint '获取下一个果子的位置和颜色

Else

'绘制果子

lngPointX = g_udtPoint.Point_X

lngPointY = g_udtPoint.Point_Y

lngPointColor = g_udtPoint.Point_Color

Me.picMoveArea.PSet (lngPointX, lngPointY), lngPointColor

End If

End Sub

'该私有子过程用于初始化游戏

Private Sub m_subGameInitialize()

Erase g_udtSnake '清空蛇的结构数组

g_intPlayerScore = 0 '清空玩家的得分

g_lngGameTime = 0 '清空游戏耗费的秒数

g_intDirection = D_DOWN '设定蛇的初始运动方向为下

g_intSnakeLength = 4 '设定蛇的初始长度

ReDim g_udtSnake(1 To g_intSnakeLength) '重新定义蛇的长度

'定义蛇头部的数据

With g_udtSnake(SNAKEONE)

.Snake_OldX = 530

.Snake_OldY = 530

.Snake_Color = vbBlack

End With

'定义蛇身第2节的数据

With g_udtSnake(SNAKETWO)

.Snake_OldX = 530

.Snake_OldY = 430

.Snake_Color = vbGreen

End With

'定义蛇身第3节的数据

With g_udtSnake(SNAKETHREE)

.Snake_OldX = 530

.Snake_OldY = 330

.Snake_Color = vbYellow

End With

'定义蛇身第4节的数据

With g_udtSnake(SNAKEFOUR)

.Snake_OldX = 530

.Snake_OldY = 230

.Snake_Color = vbRed

End With

Me.picMoveArea.Visible = True

Me.lblYourScore.Caption = g_intPlayerScore & "分"

Me.lblGameTime.Caption = g_lngGameTime & "秒"

Me.tmrSnakeMove.Interval = Me.hsbGameSpeed.Value

Me.tmrSnakeMove.Enabled = True

Me.tmrGameTime.Enabled = True

Call m_subGetPoint '获取第一个果子的位置和颜色

End Sub

接下面的

自己写着玩的,很简单,你试一试哦...

主要用了javax.swing.Timer这个类:

import java.awt.*;

import javax.swing.*;

@SuppressWarnings("serial")

public class MainClass extends JFrame {

ControlSnake control;

Toolkit kit;

Dimension dimen;

public static void main(String[] args) {

new MainClass("my snake");

}

public MainClass(String s) {

super(s);

control = new ControlSnake();

control.setFocusable(true);

kit = Toolkit.getDefaultToolkit();

dimen = kit.getScreenSize();

add(control);

setLayout(new BorderLayout());

setLocation(dimen.width / 3, dimen.height / 3);// dimen.width/3,dimen.height/3

setSize(FWIDTH, FHEIGHT);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setResizable(false);

setVisible(true);

}

public static final int FWIDTH = 315;

public static final int FHEIGHT = 380;

}

import java.util.*;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.Timer;

import java.util.Random;

@SuppressWarnings("serial")

public class ControlSnake extends JPanel implements ActionListener {

Random rand;

ArrayList<Point> list, listBody;

String str, str1;

static boolean key;

int x, y, dx, dy, fx, fy, flag;

int snakeBody;

int speed;

public ControlSnake() {

snakeBody = 1;

str = "上下左右方向键控制 P键暂停...";

str1 = "现在的长度为:" + snakeBody;

key = true;

flag = 1;

speed = 700;

rand = new Random();

list = new ArrayList<Point>();

listBody = new ArrayList<Point>();

x = 5;

y = 5;

list.add(new Point(x, y));

listBody.add(list.get(0));

dx = 10;

dy = 0;

fx = rand.nextInt(30) * 10 + 5;// 2

fy = rand.nextInt(30) * 10 + 5;// 2

setBackground(Color.WHITE);

setSize(new Dimension(318, 380));

final Timer time = new Timer(speed, this);

time.start();

addKeyListener(new KeyAdapter() {

public void keyPressed(KeyEvent e) {

if (e.getKeyCode() == 37) {

dx = -10;

dy = 0;

} else if (e.getKeyCode() == 38) {

dx = 0;

dy = -10;

} else if (e.getKeyCode() == 39) {

dx = 10;

dy = 0;

} else if (e.getKeyCode() == 40) {

dx = 0;

dy = 10;

} else if (e.getKeyCode() == 80) {

if (flag % 2 == 1) {

time.stop();

}

if (flag % 2 == 0) {

time.start();

}

flag++;

}

}

});

}

public void paint(Graphics g) {

g.setColor(Color.WHITE);

g.fillRect(0, 0, 400, 400);

g.setColor(Color.DARK_GRAY);

g.drawLine(3, 3, 305, 3);

g.drawLine(3, 3, 3, 305);

g.drawLine(305, 3, 305, 305);

g.drawLine(3, 305, 305, 305);

g.setColor(Color.PINK);

for (int i = 0; i < listBody.size(); i++) {

g.fillRect(listBody.get(i).x, listBody.get(i).y, 9, 9);

}

g.fillRect(x, y, 9, 9);

g.setColor(Color.ORANGE);

g.fillRect(fx, fy, 9, 9);

g.setColor(Color.DARK_GRAY);

str1 = "现在的长度为:" + snakeBody;

g.drawString(str, 10, 320);

g.drawString(str1, 10, 335);

}

public void actionPerformed(ActionEvent e) {

x += dx;

y += dy;

if (makeOut() == false) {

JOptionPane.showMessageDialog(null, "重新开始......");

speed = 700;

snakeBody = 1;

x = 5;

y = 5;

list.clear();

list.add(new Point(x, y));

listBody.clear();

listBody.add(list.get(0));

dx = 10;

dy = 0;

}

addPoint(x, y);

if (x == fx && y == fy) {

speed = (int) (speed * 0.8);//速度增加参数

if (speed < 200) {

speed = 100;

}

fx = rand.nextInt(30) * 10 + 5;// 2

fy = rand.nextInt(30) * 10 + 5;// 2

snakeBody++;// 2

} // 2

repaint();

}

public void addPoint(int xx, int yy) {

// 动态的记录最新发生的50步以内的移动过的坐标

// 并画出最新的snakeBody

if (list.size() < 100) {//蛇身长度最长为100

list.add(new Point(xx, yy));

} else {

list.remove(0);

list.add(new Point(xx, yy));

}

if (snakeBody == 1) {

listBody.remove(0);

listBody.add(0, list.get(list.size() - 1));

} else {

listBody.clear();

if (list.size() < snakeBody) {

for (int i = list.size() - 1; i > 0; i--) {

listBody.add(list.get(i));

}

} else {

for (int i = list.size() - 1; listBody.size() < snakeBody; i--) {

listBody.add(list.get(i));

}

}

}

}

public boolean makeOut() {

if ((x < 3 || y < 3) || (x > 305 || y > 305)) {

return false;

}

for (int i = 0; i < listBody.size() - 1; i++) {

for (int j = i + 1; j < listBody.size(); j++) {

if (listBody.get(i).equals(listBody.get(j))) {

return false;

}

}

}

return true;

}

}

关于“求c语言的贪吃蛇的代码 能运行的”这个话题的介绍,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。