python贪吃蛇中的问题

初始化了self.body=[(0,0)],然后self.body[0][0]*10是怎么计算

1个回答

self body的[][]中0就是第一个元素也就是元组的第一个元素

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
python 期末作业,用graphics写贪吃蛇,运行时出现了这样的错误(初学者,求救)

TclstackFree: incorrect freePtr. Call out of sequence? This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more imformation

关于一个类似贪吃蛇边界处理的问题

本人在ubuntu下用ncurses库用一个结构体数组(里面只有坐标和身体char类型)去实现一个雅达利以前的蜈蚣游戏,但是遇到了问题,那个蜈蚣碰到墙了没有能拐弯,请问该怎么写一个碰到边界就向下移动一行且整个身体一格一格的移动? 结构体声明如下 typedef struct Centipede { int row,col; char body; }Cen; Cen cent[10]; 长度为10的蜈蚣碰到墙该怎么处理呢??? 视频参考如下 (https://www.youtube.com/watch?v=dxoK8hosHjA )

VB贪吃蛇设计,更换背景颜色时提示代码有问题,想问下该怎么改呢?谢谢

![图片说明](https://img-ask.csdn.net/upload/202005/26/1590464967_951912.png)![图片说明](https://img-ask.csdn.net/upload/202005/26/1590464972_342574.png)![图片说明](https://img-ask.csdn.net/upload/202005/26/1590464976_542906.png)

C语言贪吃蛇小游戏的一些问题

做个贪吃蛇游戏,想实现这样的功能:假如在10秒内玩家没能操控蛇吃到食物,那么食物就会刷新,重新出现在另一个坐标。不知道如何实现这样的功能。用Sleep()延迟函数可以吗

Python代码哪里错了??怎么可以运行??

#!/usr/bin/env python #_*_ coding: utf-8 _*_ # pygame游戏库 sys操控python运行时的环境 import pygame,sys,random #这个模块包含各种pygame所使用的常量 from pygame.locals import * #1.定义颜色变亮 #0-255 0黑色 255白色 redColor = pygame.Color(255,0,0) #背景为黑色 blackColor = pygame.Color(0,0,0) #贪吃蛇为白色 whiteColor = pygame.Color(255,255,255) #2.定义游戏结束的函数 def gameOver(): pygame.quit() sys.exit() #3.定义main函数-->定义我们的入口函数 用户 def mian(): #3.1初始化pygame pygame.init() #3.2定义一个变量来控制速度 fpsClock = pygame.time.Clock() #3.3>创建pygame显示层,说白了创建一个界面 playSurface = pygame.display.set_mode((640,480)) pygame.display.set_caption('贪吃蛇') #3.4>初始化变量 #初始化贪吃蛇的起始坐标位置 我们以(100,100)为基准 snakePosition = [100,100] #初始化贪吃蛇的长度列表中有几个元素就代表有几段身体 snakeBody =[[100,100],[100,100][60,100]] #初始化目标方块的位置 targetPosition = [300,300] #目标方块的标记 目的:判断是否吃掉了这个目标方块,1就是没有吃掉, 0 吃掉 targetflag = 1 #初始化方向 --> 往右 direction = 'right' #定义一个方向变量(人为控制 案件有关系) changeDirection = direction #以上为准备工作 #3.5>pygame中 while Ture: for event in pygame.event.get(): #从队列中获取事件 if event.type == QUIT: pygame.quit() sys.exit() elif event.type == KEYDOWN: if event.key == K_RIGHT: changeDirection = 'right' if event.key == K_LIFT: changeDirection = 'left' if event.key == K_UP: changeDirection = 'up' if event.key == K_DOWN: changeDirection = 'down' # 对应该键盘上的Esc if event.key == K_ESCAPE: pygame.event.post(pygame.event.Event(QUIT)) #3.6>确定方向 if changeDirection == 'left' and not direction == 'right': direction = changeDirection if changeDirection == 'right' and not direction == 'left': direction = changeDirection if changeDirection == 'up' and not direction == 'down': direction = cahngeDirection if changeDirection == 'down' and not direction == 'up': direction = changeDirection #3.7>根据方向移动蛇头 if direction == 'right': snakePosition[0] += 20 if direction == 'left': snakePosition[0] += 20 if direction == 'up' : snakePosition[0] +=20 if direction == 'down': snakePosiotion[0] += 20 #3.8增加蛇的长度 snakeBody.insert(0,list(snakePosition)) #如果贪吃蛇的位置和目标方块的位置重合 意味着蛇吃掉它了 目标方块为0 if snakePosition[0] == targetPosition[0] and snakePosition[1] == targetPosition[1]: targetflag = 0 else: snakBody.pop() if targetflag == 0: x= random.randrange(1,32) y = random.randrange(1,24) targetPosition = [int(x*20),int(y*20)] targetflag = 1 #3.9填充背景颜色 playSurface.fill(blackColor) for position in snakeBody: #画蛇 pygame.draw.rect(playSurface,whiteColor,Rect(position[0],position[1],20,20)) #画目标方块 pygame.draw.rect(playSurface,redColor,redColor, Rect(targetPosition[0],targetPosition[1],20,20)) #第一个参数surface:指定一个surface,在这个区域内控制,界面 #第二个参数color:颜色 #第三个参数 Rect:返回一个矩形((x,y), (width,height)) #第四个参数 width:标示线条的粗细 width=0填充 实心儿 width= 1空心儿 #4.更新显示到屏幕表面 pygame.display.flip() #判断是否游戏结束 if snakePosition[0] > 620 or snakePosition[0] < 0: gameOver() elif snakePosition[1] > 460 or sankePosition[1] < 0: gameOver() #控制游戏速度 fpsClock.tick(5) #5.启动这个入口函数 if __name__ == "__main__": main()

c语言贪吃蛇 请解释问题原因,不要代码

以下是我写的还未完成的贪吃蛇代码,现在的主要问题是//蛇动 这里,代码我都检查几遍了,可是为什么运行的时候蛇还是没有动呢,请哪位大神解释下,万分感谢,请不要给我别的源代码,谢谢! ``` #include<stdio.h> #include<stdlib.h> #include<time.h> #include<string.h> #define SankeLong 20 #include<windows.h> #include<mmsystem.h> #pragma comment(lib,"winmm.lib") //方向 enum {to_east=2,to_west=-2,to_north=-1,to_south=1}; //蛇数组 int q_arrSanke[SankeLong][3] = {0}; //边框 char q_StrGameBack[20][48] = { "■■■■■■■■■■■■■■■■■■■■■■■\n", "■ ■\n", "■ ■\n", "■ ■\n", "■ ■\n", "■ ■\n", "■ ■\n", "■ ■\n", "■ ■\n", "■ ■\n", "■ ■\n", "■ ■\n", "■ ■\n", "■ ■\n", "■ ■\n", "■ ■\n", "■ ■\n", "■ ■\n", "■ ■\n", "■■■■■■■■■■■■■■■■■■■■■■■\n" }; void StartGame() { printf("\t\t\t 欢迎来到贪吃蛇世界\n\n"); printf("\t\t\t W A S D 控制方向\n"); printf("\t\t\t 按下空格键开始游戏\n"); } void StartMusic() { PlaySound("E:\\茜拉-想你的夜.wav",NULL,SND_FILENAME | SND_ASYNC); } //输入空格切换界面 void ShuSpace() { char c; c = getch(); if (c == ' ') return; else ShuSpace(); } //停止播放音乐 void StopMusic() { PlaySound(NULL, 0, 0); } //游戏边框 void GameBoard() { int i, j; for (i = 0; i < 20; i++) { printf("%s", q_StrGameBack[i]); } } //产生一个随机位置 void SetSankeRandPos() { int mX = -1; int mY = -1; //产生随机数 srand((unsigned int)time(NULL)); mX = rand() % 19 + 1; mY = rand() % 18 + 1; //首次蛇节点 q_arrSanke[0][0] = mY; q_arrSanke[0][1] = mX * 2; q_arrSanke[0][2]= to_west; q_arrSanke[1][0] = mY; q_arrSanke[1][1] = mX * 2+2; q_arrSanke[1][2] = to_west; q_arrSanke[2][0] = mY; q_arrSanke[2][1] = mX * 2+4; q_arrSanke[2][2] = to_west; } //画蛇 void DrawSnake() { int i = 0; for (i = 0; q_arrSanke[i][0] != 0; i++) { memcpy(&q_StrGameBack[q_arrSanke[i][0]][q_arrSanke[i][1]], "■",2); } } //蛇动 void MoveSnake() { int i = SankeLong-1; while (i--) { if (q_arrSanke[i][0]==0) { continue; } else { q_arrSanke[i][0] = q_arrSanke[i - 1][0]; q_arrSanke[i][1] = q_arrSanke[i - 1][1]; q_arrSanke[i][2] = q_arrSanke[i - 1][2]; } } if (q_arrSanke[0][2] == to_west || q_arrSanke[0][2] == to_east) q_arrSanke[0][1] += q_arrSanke[0][2]; else q_arrSanke[0][0] += q_arrSanke[0][2]; DrawSnake(); } //游戏界面 void GameView() { system("cls"); //清空界面 GameBoard(); //游戏边框 SetSankeRandPos(); //产生一个随机位置 DrawSnake(); while (1) { system("cls"); MoveSnake(); GameBoard(); //游戏边框 Sleep(500); } } int main() { //StartGame(); //游戏封面 //StartMusic(); //播放游戏音乐 //ShuSpace(); //输入空格切换界面 //StopMusic(); //停止播放音乐 GameView(); //游戏界面 system("pause"); return 0; } ```

java贪吃蛇移动问题求解

当前只用到了3个类: 代表蛇:Snake.java 代表地图:Garden.java 代表方向的枚举类:Dir.java 遇到的问题:我是采取在蛇头前添加一节,然后去掉尾巴上最后一节,再重画的方式 来让蛇移动,但是去蛇尾的方法好像没起作用,问题不知道出在哪了,有大神来看看么? 想要达到的效果:只有一个格子在移动,而不是这样每动一次,原来的还在。 Snake.java------------------------------------------------------------ ```import java.awt.Color; import java.awt.Graphics; import java.awt.event.KeyEvent; public class Snake { private Node head = null; private Node tail = null; private int size; Node n = new Node(15, 10, Dir.L); private Garden gd; public Snake(Garden gd) { head = n; tail = n; size = 1; this.gd = gd; } // 添尾 public void addToTail() { Node node = null; switch (tail.dir) { case L: node = new Node(tail.x + 1, tail.y, Dir.L); break; case R: node = new Node(tail.x - 1, tail.y, Dir.R); break; case U: node = new Node(tail.x, tail.y + 1, Dir.U); break; case D: node = new Node(tail.x, tail.y - 1, Dir.L); break; } node.prev = tail; tail.next = node; tail = node; size++; } // 去尾 public void deleteTail() { if (size == 0) return; tail = tail.prev; tail.next = null; } // 添头 public void addToHead() { Node node = null; switch (head.dir) { case L: node = new Node(head.x - 1, head.y, head.dir); break; case R: node = new Node(head.x + 1, head.y, head.dir); break; case U: node = new Node(head.x, head.y - 1, head.dir); break; case D: node = new Node(head.x, head.y + 1, head.dir); break; } node.next = head; head.prev = node; head = node; size++; } public void move() { if (size == 0) return; addToHead(); deleteTail(); } Node n1 = new Node(n.x-5, n.y, n.dir); Node n2 = new Node(n.x-10, n.y, n.dir); public void draw(Graphics g) { if (size <= 0) return; move(); for (Node theNode = head; theNode != null; theNode = theNode.next) { theNode.draw(g); } } private class Node { private int x, y; Dir dir = null; private int w = Garden.wide; Node next = null; Node prev = null; public Node(int x, int y, Dir dir) { this.x = x; this.y = y; this.dir = dir; } public void draw(Graphics g) { Color c = g.getColor(); g.setColor(Color.RED); g.fillRect(x * w, y * w, w, w); g.setColor(c); } } public void KeyPressed(KeyEvent e) { int key = e.getKeyCode(); switch (key) { case KeyEvent.VK_W: head.dir = Dir.U; break; case KeyEvent.VK_S: head.dir = Dir.D; break; case KeyEvent.VK_A: head.dir = Dir.L; break; case KeyEvent.VK_D: head.dir = Dir.R; break; } } } ``` Garden.java----------------------------------------------------------------------- import java.awt.*; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import javax.swing.JFrame; import javax.swing.JPanel; public class Garden extends JPanel { private JFrame jf = null; // 格子大小 public static int wide = 20; // 窗口大小 private int gWidth = 500; private int gHeigth = 500; Snake s = new Snake(this); Egg e = new Egg(); public static void main(String[] args) { new Garden().init(); } // 初始化窗口 private void init() { jf = new JFrame(); jf.add(this); jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE); jf.setLocation(20, 20); jf.setSize(gWidth + 7, gHeigth + 30); jf.setResizable(false); jf.setVisible(true); jf.addKeyListener(new KeyMonitor()); new Thread(new PaintThread()).start(); } public void paint(Graphics g) { Color c = g.getColor(); g.setColor(Color.GREEN); // 画格子 for (int i = 0; i < gHeigth; i += wide) { for (int j = 0; j < gWidth; j += wide) { g.drawRect(i, j, wide, wide); } } g.setColor(c); s.draw(g); e.drawEgg(g); } private class PaintThread implements Runnable { @Override public void run() { while(true) { repaint(); try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } } } } public class KeyMonitor extends KeyAdapter { @Override public void keyPressed(KeyEvent e) { s.KeyPressed(e); } } } Dir.java--------------------------------------------------------------------------- public enum Dir { L,R,U,D; }

pygame 贪吃蛇遇到的问题

做了两个黑洞,进入一个黑洞会传送到另一个黑洞,但是timer.tick(30)帧太快导致无法从传送,改成timer.tick(2)就可以,这是为什么,应该怎么做?主程序代码如下: ``` 主程序开始 pygame.init() img_size =40 img_group = list() screen_size = 0 #pygame.FULLSCREEN screen = pygame.display.set_mode((24*img_size,18*img_size),screen_size) pygame.display.set_caption("嗷大喵贪吃蛇") face = pygame.image.load("face.png") load_pic() game_init() game_over = False last_time = 0 bgm = None auto_play = False step_time = 400 waiting =True audio_init() rePlay = True play_sound(bgm) while True: timer.tick(2) ticks = pygame.time.get_ticks() current_time = time.clock() for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() elif event.type == MOUSEBUTTONUP: if waiting == True: waiting = False game_over = False last_time = 0 auto_play = False step_time = 400 game_init() keys = pygame.key.get_pressed() if keys[K_ESCAPE]: pygame.quit() sys.exit() elif keys[K_UP] or keys[K_w]: snake.velocity = Point(0,-1) elif keys[K_DOWN] or keys[K_s]: snake.velocity = Point(0,1) elif keys[K_LEFT] or keys[K_a]: snake.velocity = Point(-1,0) elif keys[K_RIGHT] or keys[K_d]: snake.velocity = Point(1,0) elif keys[K_f]: if screen_size == pygame.FULLSCREEN: screen_size =0 else: screen_size =pygame.FULLSCREEN screen = pygame.display.set_mode((24*img_size,18*img_size),screen_size) pygame.display.set_caption("嗷大喵贪吃蛇") elif keys[K_PLUS] or keys[K_KP_PLUS]: step_time -= 10 if step_time <50: step_time=50 elif keys[K_MINUS] or keys[K_KP_MINUS]: step_time += 10 if step_time >400: step_time = 400 elif keys[K_SPACE]: if auto_play: auto_play = False step_time = 400 else: auto_play = True step_time = 100 if waiting: screen.blit(face,(0,0)) else: if not game_over: hole_group.update(ticks) snake.update(ticks) food_group.update(ticks) #检测是否捡起食物,并增加身体长度 hit_list = pygame.sprite.groupcollide(snake.segments, \ food_group, False, True) if len(hit_list) > 0: food_group.add(Food()) snake.add_segment() #检测是否碰到了自己的身体 for n in range(1, len(snake.segments)): if pygame.sprite.collide_rect(snake.segments[0], snake.segments[n]): game_over = True #检查屏幕边界 head_x = snake.segments[0].X//img_size head_y = snake.segments[0].Y//img_size if head_x < 0: snake.segments[0].X = 23 * img_size elif head_x > 24: snake.segments[0].X = 0 * img_size if head_y < 0: snake.segments[0].Y = 17 * img_size elif head_y > 18: snake.segments[0].Y = 0 * img_size #检测是否进入黑洞,并从另一个黑洞出来 holex = snake.segments[0].X holey = snake.segments[0].Y if holex == hole1.X and holey == hole1.Y: snake.segments[0].X = hole2.X snake.segments[0].Y = hole2.Y elif holex == hole2.X and holey == hole2.Y: snake.segments[0].X = hole1.X snake.segments[0].Y = hole1.Y #执行自动寻路代码 if auto_play: auto_move() backbuffer.fill((20,50,20)) snake.draw(backbuffer) food_group.draw(backbuffer) hole_group.draw(backbuffer) screen.blit(backbuffer, (0,0)) if not game_over: print_text(font, 0, 0, "Length " + str(len(snake.segments))) print_text(font, 0, 20, "Position " + str(snake.segments[0].X//img_size) + \ "," + str(snake.segments[0].Y//img_size)) else: print_text(font, 0, 0, "GAME OVER") waiting = True game_over = False #显示自动字样 if auto_play: print_text(font, 600, 0, "AUTO") #循环播放背景音乐 if int(current_time)%200 ==0 and rePlay: play_sound(bgm) rePlay = False if int(current_time)%200 == 1: rePlay = True pygame.display.update() ```

Android问题 贪吃蛇程序报错

![图片说明](https://img-ask.csdn.net/upload/201605/29/1464510848_54035.png) 这里调用就报错: if ((p[0] >= activity.x1 - 80) && (p[0] <= activity.x1 + 80) && (p[1] >= activity.y1 - 16) && (p[1] <=activity.y1 + 16)) { activity.onStop(); return; } // 撞墙 if ((p[0] < 16) || (p[1] < 16) || (p[0] > activity.screenW - 16) || (p[1] > activity.screenH - 16)) { activity.onStop(); // activity.onResume(); return; } 下面是代码: public class GameThread extends Thread { private GameView view; private SurfaceHolder holder; public boolean pauseFlag = false;// 是否暂停 public GameThread(GameView view) { this.view = view; holder = view.getHolder(); } @Override public void run() { Canvas canvas; while (true) { canvas = null; if (!pauseFlag) { try { canvas = holder.lockCanvas(); synchronized (holder) { view.drawGame(canvas); } } finally { if (canvas != null) { holder.unlockCanvasAndPost(canvas); } } } try { Thread.sleep(200); } catch (Exception e) { e.printStackTrace(); } } } } public class MainActivity extends Activity { private GameView gameView; private GestureDetector gestureDetector;// 处理手势 public int fx = 0; // 食物的X坐标 public int fy = 0;// 食物的Y坐标 public int size = 16; // 蛇身的大小 public int changdu = 2;// 蛇身长度 public int direction = 3;// 蛇的移动方向,分别使用 0上,1下,2左,3右 public int x = 16; // 移动的X坐标 public int y = 16; // 移动的Y坐标 public int x1 = 0; // 障碍物X坐标 public int y1 = 0; // Y坐标 public ArrayList<int[]> path = new ArrayList<int[]>();// 记录运行的路径 public HashMap<Integer, Integer> roadBlock = new HashMap<Integer, Integer>();// 障碍物 public int screenW; // 屏幕的宽度 public int screenH; // 屏幕的高度 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 初始化视图 initView(); // 初始化地图 initMap(); // 初始化游戏(手势) initGame(); } private void initGame() { gestureDetector = new BuileGesture(this, new BuileGesture.OnGestureResult() { @Override public void onGestureResult(int direction) { // 获取从手势处理类得到的手势方向 MainActivity.this.direction = direction; Toast.makeText(MainActivity.this, "方向:" + direction, Toast.LENGTH_SHORT).show(); } }).Builde(); } private void initMap() { DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); screenW = metrics.widthPixels; screenH = metrics.heightPixels; // 初始化食物 Random rd = new Random(System.currentTimeMillis()); int tempX = rd.nextInt(screenW / 16); int tempY = rd.nextInt(screenH / 16); // ... fx = tempX * 16; fy = tempY * 16; // 初始化障碍物 x1=screenW/2; y1=screenH/2; } private void initView() { // 去标题栏 requestWindowFeature(Window.FEATURE_NO_TITLE); // 设置全屏 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); // 绑定视图 gameView = new GameView(MainActivity.this); setContentView(gameView); } @Override public boolean onTouchEvent(MotionEvent event) { // 将触摸事件和手势处理类绑定到一起 return gestureDetector.onTouchEvent(event); } @Override public void onResume() { super.onResume(); // 游戏继续或重新开始 // ... ... Toast.makeText(MainActivity.this, "游戏开始", Toast.LENGTH_SHORT).show(); gameView.gameThread.pauseFlag = false; } @Override protected void onPause() { super.onPause(); // 游戏暂停 // ... ... gameView.gameThread.pauseFlag = true; } @Override public void onStop() { super.onStop(); // 游戏结束 // ... ... Toast.makeText(MainActivity.this, "游戏结束", Toast.LENGTH_SHORT).show(); gameView.gameThread.pauseFlag = true; return ; } }

贪吃蛇数据库连接问题

package ads.com; import java.awt.Color; import java.awt.Frame; import java.awt.Graphics; enum State{ RUN,DEAD; } public class Board extends Frame{ private static final int width = 400; private static final int height = 300; public static final int tilewidth = 16; public static final int tileheight = 16; public static final int row = 15; public static final int column = 20; public static final int xoffset = ((width-column*tilewidth)/2); public static final int yoffset = ((height-row*tileheight)/2); private Snake snake; private Food food; private State state; public int getRow(){ return row; } public int getColumn(){ return column; } public Board(String title){ super(title); setSize(width,height); setVisible(true); setResizable(false); setState(State.RUN); snake = new Snake(); food = produceFood(); addWindowListener(new BoardHandler()); addKeyListener(new KeyHandler(this,snake)); } public Snake getSnake(){ return snake; } public void drawDecoration(Graphics g){ g.setColor(Color.RED); g.drawRect(xoffset,yoffset,column*tilewidth,row*tileheight); } public void paint(Graphics g){ switch(state){ case RUN: drawDecoration(g); drawSnake(g); drawFood(g); break; case DEAD: drawDeadMessage(g); break; } } public void drawSnake(Graphics g){ g.setColor(Color.GREEN); for(int i=0;i<snake.getLength();i++){ Body body = snake.getBody(i); g.fillRect(body.col*tilewidth+xoffset,body.row*tileheight+yoffset,tilewidth,tileheight); } } public void drawFood(Graphics g){ g.setColor(Color.BLUE); g.fillRect(food.col*tilewidth+xoffset,food.row*tileheight+yoffset, tilewidth, tileheight); } public void drawDeadMessage(Graphics g){ g.drawString("GGGGGGGGGGGGGGGGGG,your score:"+ snake.score +"press F2 to retry",xoffset,height/2); } public Food produceFood(){ boolean finished = false; Food myfood = null; while(!finished){ myfood = new Food(); finished = true; for(int i=0;i<snake.getLength();i++){ if(snake.getBody(i).col==myfood.col&&snake.getBody(i).row==myfood.row) finished = false; } } food = myfood; snake.score++; return food; } public Food getFood(){ return food; } public void setState(State s){ state = s; } } package ads.com; public class Body { public int row; public int col; public Body(int row,int col){ this.row = row; this.col = col; } } package ads.com; import java.util.Random; public class Food extends Body{ public Food(){ super(0,0); Random r = new Random(); this.row = r.nextInt(Board.row); this.col = r.nextInt(Board.column); } } package ads.com; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; public class KeyHandler extends KeyAdapter{ private Snake snake; private Board board; public KeyHandler(Board b,Snake s){ snake = s; board = b; } public void keyPressed(KeyEvent e){ switch(e.getKeyCode()){ case KeyEvent.VK_UP: snake.setNextDirection(Direction.UP); break; case KeyEvent.VK_DOWN: snake.setNextDirection(Direction.DOWN); break; case KeyEvent.VK_LEFT: snake.setNextDirection(Direction.LEFT); break; case KeyEvent.VK_RIGHT: snake.setNextDirection(Direction.RIGHT); break; case KeyEvent.VK_F2: snake.reset(); board.setState(State.RUN); break; } } } package ads.com; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class BoardHandler extends WindowAdapter{ public void windowClosing(WindowEvent e){ System.exit(0); } } package ads.com; import java.util.ArrayList; import java.util.List; enum Direction { UP, DOWN, LEFT, RIGHT } public class Snake { private List<Body> mybody; private Direction mydirection; private Body head; private Direction nextdirection; private ScoreTrans st; public int score; private boolean flag; public Snake() { mybody = new ArrayList<>(); st = new ScoreTrans(score); reset(); } public void move(Board b) { mydirection = nextdirection; switch (mydirection) { case UP: head = new Body(head.row - 1, head.col); break; case DOWN: head = new Body(head.row + 1, head.col); break; case LEFT: head = new Body(head.row, head.col - 1); break; case RIGHT: head = new Body(head.row, head.col + 1); break; default: head = new Body(0, 0); break; } Food f = b.getFood(); if(f.row==head.row&&f.col==head.col){ mybody.add(0,f); b.produceFood(); } else{ mybody.add(0, head); mybody.remove(mybody.size() - 1); } if(checkBodyCollsion()||checkBoundCollsion(b)){ b.setState(State.DEAD); if(!flag) { st.trans(); flag = true; } } } public void setNextDirection(Direction d) { switch (d) { case UP: if (mydirection == Direction.DOWN) { break; } else nextdirection = d; case DOWN: if (mydirection == Direction.UP) { break; } else nextdirection = d; case LEFT: if (mydirection == Direction.RIGHT) { break; } else nextdirection = d; case RIGHT: if (mydirection == Direction.LEFT) { break; } else nextdirection = d; } } public void reset() { mybody.clear(); mybody.add(new Body(7, 4)); mybody.add(new Body(7, 3)); mybody.add(new Body(7, 2)); mybody.add(new Body(7, 1)); head = mybody.get(0); mydirection = Direction.RIGHT; nextdirection = Direction.RIGHT; score = 0; flag = false; } public Body getBody(int index) { return mybody.get(index); } public int getLength() { return mybody.size(); } public boolean checkBodyCollsion(){ for(int i=1;i<mybody.size()-1;i++){ if((mybody.get(i).col==head.col)&&(mybody.get(i).row==head.row)) return true; } return false; } public boolean checkBoundCollsion(Board b){ if(head.col<0||head.col>=b.column||head.row<0||head.row>=b.row) return true; return false; } public int getScore(){ return score; } } package ads.com; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class OracleOpen { private static String driver; private static String url; private static String username; private static String password; static { driver="oracle.jdbc.driver.OracleDriver"; url="jdbc:oracle:thin:@127.0.0.1:1521:orcl"; username="scott"; password="zhushaowei12"; } public static Connection open(){ try { Class.forName(driver); return DriverManager.getConnection(url,username,password); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } public static void close(Connection conn){ if(conn!=null){ try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } package ads.com; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; public class ScoreTrans { private Snake snake; private String name = "ads"; private int score; public ScoreTrans(int score){ this.score = score; } public void trans(){ Connection conn = OracleOpen.open(); String sql = "insert into snake values(?,?)"; try { PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1,name); pstmt.setInt(2,snake.getScore()); pstmt.executeUpdate(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } OracleOpen.close(conn); } } package ads.com; public class Updater extends Thread{ private Board myboard; private Snake snake; public Updater(Board b,Snake s){ myboard = b; snake = s; } public void run(){ while(true){ snake.move(myboard); myboard.repaint(); try { sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } package ads.com; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Board board = new Board("snake"); Updater myupdater = new Updater(board,board.getSnake()); myupdater.start(); } } 没加数据库前能正常运行,加了以后发现数据无法存入数据库

C语言贪吃蛇总是莫名奇妙卡住,我应该如何调试?

(我加了40C币的悬赏金,求帮忙!) (问题解决了必有重谢!!!!!) 这是我写的贪吃蛇,它总是莫名奇妙卡住,我不会调试, 哪位大神帮我看看问题出在哪? (要帮我定位哪里的代码出错了) (这个bug我也不知道是在哪,似乎它的出现挺随机的) Tips:运行的时候要先把控制台字号设为14号,然后用英文输入法输入 [我用codeblocks写的代码的百度网盘链接](https://pan.baidu.com/s/1cQgwdQP83tdlHoGshHZpzw "里面包括了我自己写的codeblocks项目的全部文件")

贪吃蛇 窗体布局问题

首先,我和视频教程的代码一模一样。就是不能修改panel的颜色 ``` public class Snake { 7 8 public static void main(String[] args) { 9 10 JFrame frame = new JFrame(); // 创建一个游戏界面的框架 11 frame.setBounds(10, 10, 900, 720); // 设置框架的大小 12 frame.setResizable(false); // 设置框架大小为不能改变 13 // 点击关闭按钮 关闭游戏界面 14 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 15 16 SnakePanel panel = new SnakePanel(); //添加画布 17 frame.add(panel); // 刚添加时画布是空的看不到 18 19 frame.setVisible(true); // 允许显示游戏界面 20 } 21 22 } ``` ``` package snake; import java.awt.Color; import java.awt.Graphics; import javax.swing.JPanel; public class SnakePanel extends JPanel {//继承 JPanel 这个类实则是画布(内容白板) 把这个画布添加到主方法 public SnakePanel(){ // 这个画布需要两个方法 一个是初始化方法 获得焦点 this.setFocusable(true); } public void paint(Graphics g){ // 图形 可以理解为 一支笔 随便把它的包导进来 this.setBackground(Color.PINK); // this 指代SnakePanel 设置这个画布或者白板的颜色 } } ``` 运行后无法修改 画布 jpanel的颜色。这个问题不止我一个人遇到,我百度了很多人,仍然没有答案。 有人说是paint()的方法问题。 源代码作者解释: class SnakePanel 本质就是JPanel 其中this 就是SnakePanel。 显示,我把this换成SnakePanel是出现错误。但是源代码作者运行却没有问题、 http://www.qingke.me/lessons/96/show_video 源代码作者

Java贪吃蛇图形绘制问题

* # 这里是控制蛇移动的代码 ``public void move_on() { paint p1=new paint(); Fruit fruit=new Fruit(); Snake snake=new Snake(); Move read=new Move(); /* * 对第一个元素即蛇头进行判断,根据所指方向对x,y坐标进行操作 * 完毕后重绘界面,达到动态移动效果 */ new Thread(new Runnable() { @Override public void run() { // TODO 自动生成的方法存根 while(Snake.life){ switch (Model.snake.get(0).direction) { case 8: Model.snake.get(0).point.y+=General.y_height; p1.repaint(); break; case 2: Model.snake.get(0).point.y-=General.y_height; break; case 4: Model.snake.get(0).point.x-=General.x_width; break; case 6: Model.snake.get(0).point.x+=General.x_width; break; default: break; } System.err.println(Model.snake.get(0).point.x+" "+Model.snake.get(0).point.y); //调用绘制方法进行重绘 SwingUtilities.invokeLater(new Runnable() { @Override public void run() { // TODO 自动生成的方法存根 p1.repaint(); //对蛇体进行移动操作,即每一个节点都到了前一个节点的位置上 for(int i=1;i<Model.snake.size();i++) { Model.snake.get(i).direction=Model.snake.get(i-1).direction; Model.snake.get(i).point=Model.snake.get(i-1).point; } /* 进行完移动操作之后判断一下是否吃到果子 * 如果被吃掉,则把果子的位置和赋值给read,将原头结点的方向赋值给read * 最后将read插入snake头结点 */ if(fruit.isEaten()) { read.point=fruit.location; read.direction=Model.snake.get(0).direction; Model.snake.offerFirst(read); p1.repaint(); } }//end swing_run }); /* * 判断是否撞墙或吃到身体(结束游戏) */ snake.isAlive(); try { Thread.sleep(1500); } catch (InterruptedException e) { // TODO: handle exception } move_on(); } } }).start(); }//end move_on` # 这里是绘制蛇和果子的方法 ## ``public void paintComponent(Graphics g) { super.paintComponent(g); System.err.println("调用绘制方法"); snake_paint.drawSnake(g); /* * 当蛇长为1(即刚初始化游戏)的时候 * 或判断果子被吃掉后 * 才能绘制果子 */ if(Snake.Long==1||fruit_paint.isEaten()) { fruit_paint.drawFruit(g); } # public void drawSnake(Graphics g) { super.paintComponent(g); Model model=new Model(); g.setColor(Color.BLACK); System.err.println("调用绘制蛇体方法"); for(Move r:model.snake) g.fillRect(r.point.x,r.point.y, General.x_width, General.y_height); }` public void drawFruit(Graphics g) { g.setColor(Color.RED); g.fillRect(location.x, location.y, General.x_width,General.y_height); } 小弟现在面临的问题是:1.绘制方法调用了,但是面板毫无动静,依然是第一次值的位置。看了一下断点和输出,值是传给了绘制方法的。 是不是界面刷新问题?在move_on方法里面新建了一个线程,不知道用对没。 2.有时候值会大于定下的边界(y=700),而继续增加一点,比如到了750才停下,是不是线程冲突的问题? 3.,除了第一次调用绘制方法的时间正确以外,其他的时间都不对,不是每一个switch判定之后马上就调用。而是在判定游戏结束(蛇头位置大于容器边界)之后一直调用。

Java写贪吃蛇遇到的食物生成问题

我是用线程方法让蛇和食物动起来的,不过食物和蛇一起写在paint方法里,repaint一次,食物也会随机变换位置,我想通过观察蛇长是否改变来决定是否new一个新对象,但原来的食物位置不知道怎么记录下来,求教,或者其他更好的解决的方法,谢谢。 import java.awt.Color; import java.awt.Frame; import java.awt.Graphics; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class Shell extends Frame { private static final int Width = 900; private static final int Height = 700; private static final int XOffset = 50; private static final int YOffset = 50; private static final int XEnd = 850; private static final int YEnd = 650; public static final int Row = 30; public static final int Col = 40; public static final int Block_Size = 20; public static Food myFood = null; private Node myNode = null; private static Snake mySnake = new Snake(); private static Shell shell = new Shell(); public Shell() { this.setTitle("贪吃蛇"); this.setSize(Width, Height); this.setResizable(false); this.setLocationRelativeTo(null); this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); this.addKeyListener(new KeyHandler(mySnake)); //produceFood(); this.setVisible(true); } public void paint(Graphics g) { drawGrid(g); drawFood(g); drawSnake(g); } private void drawGrid(Graphics g) { g.setColor(Color.BLACK); for(int i=0; i<=Row; i++) { g.drawLine(XOffset, Block_Size*i+50, XEnd, Block_Size*i+50); } for(int i=0; i<=Col; i++) { g.drawLine(Block_Size*i+50, YOffset, Block_Size*i+50, YEnd); } } public void drawSnake(Graphics g) { g.setColor(Color.BLACK); for(int i=0; i<mySnake.getLength(); i++) { myNode = mySnake.getNode(i); g.fillRect(myNode.X, myNode.Y, Block_Size, Block_Size); } } private void drawFood(Graphics g) { myFood = new Food(); g.setColor(Color.RED); g.fillRect(myFood.getX(), myFood.getY(), Block_Size, Block_Size); } public Food getFood() { return myFood; } public static Food produceFood() { boolean finished; Food food; do{ finished = true; food =new Food(); for(int i=0; i<mySnake.getLength(); i++) { if(mySnake.getNode(i).X == food.getX() || mySnake.getNode(i).Y == food.getY()) { finished = false; } } } while(!finished); myFood = food; return food; } public static void main(String[] args) { produceFood(); new Updater(shell, mySnake).start(); } } class Updater extends Thread { private Shell shell = null; private Snake snake = null; public Updater(Shell shell, Snake snake) { this.shell = shell; this.snake = snake; } public void run() { while(true) { snake.move(shell); shell.repaint(); try { sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } } } } ``` import java.util.ArrayList; import java.util.List; public class Snake { List<Node> Nodes = null; public Direction direction = null; private Node newNode = null; private Node headNode = null; private Direction nextDirection = null; public Snake() { Nodes = new ArrayList<Node>(); reset(); } public void setDirection(Direction d) { switch(this.direction) { case LEFT : if(d == Direction.RIGHT) return ; break; case RIGHT : if(d == Direction.LEFT) return ; break; case UP : if(d == Direction.DOWN) return ; break; case DOWN : if(d == Direction.UP) return ; break; } nextDirection = d; } public void move(Shell shell) { headNode = Nodes.get(0); this.direction = nextDirection; switch(this.direction) { case LEFT: newNode = new Node(headNode.X-Shell.Block_Size, headNode.Y); break; case RIGHT: newNode = new Node(headNode.X+Shell.Block_Size, headNode.Y); break; case UP: newNode = new Node(headNode.X, headNode.Y-Shell.Block_Size); break; case DOWN: newNode = new Node(headNode.X, headNode.Y+Shell.Block_Size); break; } Food myFood = shell.getFood(); if (myFood.getX() == headNode.X && myFood.getY() == headNode.Y) { Nodes.add(0,new Node(myFood.getX(),myFood.getY())); //Shell.produceFood(); } else { Shell.myFood = null; Nodes.add(0,newNode); Nodes.remove(Nodes.size()-1); } } public int getLength() { return Nodes.size(); } public Node getNode(int index) { return Nodes.get(index); } private void reset() { Nodes.clear(); Nodes.add(new Node(Shell.Block_Size*10+50,Shell.Block_Size*10+50)); Nodes.add(new Node(Shell.Block_Size*9+50,Shell.Block_Size*10+50)); Nodes.add(new Node(Shell.Block_Size*8+50,Shell.Block_Size*10+50)); Nodes.add(new Node(Shell.Block_Size*7+50,Shell.Block_Size*10+50)); nextDirection = Direction.RIGHT; } } ``` import java.util.Random; public class Food { public static int X = 0; public static int Y = 0; Random random = new Random(); public int getX() { return Shell.Block_Size*random.nextInt(Shell.Col)+50; } public int getY() { return Shell.Block_Size*random.nextInt(Shell.Row)+50; } } ``` public enum Direction { LEFT, RIGHT, UP, DOWN } ``` import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; public class KeyHandler extends KeyAdapter{ private Snake snake = null; public KeyHandler(Snake snake) { this.snake = snake; } public void keyPressed(KeyEvent e) { switch(e.getKeyCode()) { case KeyEvent.VK_UP : snake.setDirection(Direction.UP); break; case KeyEvent.VK_DOWN : snake.setDirection(Direction.DOWN); break; case KeyEvent.VK_RIGHT : snake.setDirection(Direction.RIGHT); break; case KeyEvent.VK_LEFT : snake.setDirection(Direction.LEFT); break; } } } ``` public class Node { public int X = 0; public int Y = 0; public Node(int X, int Y) { this.X = X; this.Y = Y; } } ```

求大神, 贪吃蛇的问题。

#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <time.h> #include <windows.h> #include "snake.h" int Score = 0; int snakespeed = 50; // 蛇的运行速度 // 角色行为 // 暂时不知道咋写 --! // 游戏框架 static void Game_Menu(void); // 主菜单界面 static void Start_Game(void); //开始游戏 static void Game_Help(void); // 游戏帮助 static void Game_Setting(void); // 游戏设置 static void Game_Over(void); // 结束游戏 void gotoxy(int x, int y); // 主函数 int main(void) { Game_Menu(); return 0; } void Game_Menu(void) { static char key; while(1) { system("cls"); system ("title 贪吃蛇"); system("DATE /T"); system("TIME /T"); //system("color "); //system(mode)// 写完再调整 printf("|_________________________________________________|\n"); printf("| * | 1.START |\n"); printf("| * * | 2.help |\n"); printf("| * | 3.game setting |\n"); printf("| * | 0.exit |\n"); printf("| * |____________________|\n"); printf("| * | |\n"); printf("| * | |\n"); printf("| * | |\n"); printf("| * | |\n"); printf("| * | |\n"); printf("| * * | |\n"); printf("| * * | |\n"); printf("|____________________________|____________________|\n"); //响应按键 key = getch(); switch(key){ case '1': Start_Game(); break; case '2': Game_Help(); break; case '3': Game_Setting(); break; case '0': Game_Over(); break; fflush(stdin); } } } void Start_Game(void) { static char ch; static int i, j; static int Game_Over_Flag = 0; // 初始化食物 srand((unsigned int)time(NULL)); food.x = rand() % (MAP_WIDTH - 2) + 1; // 应该是多余的 不知道为啥食物老是出现在0, 0 处 food.y = rand() % (MAP_HEIGHT - 2) + 1; // 初始化蛇 snake.x[0] = 2; snake.y[0] = 2; snake.x[1] = 3; snake.y[1] = 2; snake.node = 2; snake.direction = 3; snake.life = 3; // 初始化地图 system("cls"); // 不加这一句打印的是乱码-- 不知道为啥 for (i = 0; i < MAP_HEIGHT; i++) for (j = 0; j < MAP_WIDTH; j++) { if (i == 0 || i == MAP_HEIGHT-1 || j == 0 ||j == MAP_WIDTH-1) Map[i][j] = '.'; else Map[i][j] = ' '; } for (i = 0; i < MAP_HEIGHT; i++) puts(Map[i]); while(1) { while(!kbhit()) { // 初始化食物 if (food.yes == 1) { food.x = rand() % (MAP_WIDTH - 1) + 1; food.y = rand() % (MAP_HEIGHT - 1) + 1; food.yes = 0; // 已有食物 ,重置为1 } if (food.yes == 0) { gotoxy(food.x, food.y); putchar('g'); } for (i = snake.node-1; i >= 0; i--)// 从尾部开始比从头部开始具有更高的流畅性 { gotoxy(snake.x[i], snake.y[i]); putchar('*'); } for (i = snake.node-1; i > 0; i--) { snake.x[i] = snake.x[i-1]; snake.y[i] = snake.y[i-1]; } // 判断方向 if (snake.direction == 1) snake.y[0]--; else if(snake.direction == 2) snake.x[0]--; else if (snake.direction == 3) snake.y[0]++; else if (snake.direction = 4) snake.x[0]++; // 蛇是否撞到自己 for (i = 3; i < snake.node; i++) { if (snake.x[i] == snake.x[0] && snake.y[i] == snake.y[0]) snake.life = 0; } // 蛇是否撞墙 if (snake.x[0] <= 0 || snake.x[0] >= MAP_WIDTH-1 || snake.y[0] <= 0 || snake.y[0] >= MAP_HEIGHT-1) snake.life = 0; // 生命值为0 退出游戏 if (snake.life == 0) { Game_Over(); Game_Over_Flag = 1; break; } // 蛇是否吃到食物 if (snake.x[0] == food.x && snake.y[0] == food.y) { snake.node++; // 蛇身变长 food.yes = 1; // 重置为1 不在刷新食物 Score += 100; } // gotoxy(snake.x[snake.node-1], snake.y[snake.node-1]); // 暂且选用高频刷新的方案 // putchar(' '); Sleep(snakespeed); system("cls"); for (i = 0; i < MAP_HEIGHT; i++) puts(Map[i]); printf("*****************************\n"); printf("当前分数: %d\n", Score); } // 选择方向 ch = getch(); switch(ch){ case 'w': snake.direction = 1; break; case 'a': snake.direction = 2; break; case 's': snake.direction = 3; break; case 'd': snake.direction = 4; break; } if (Game_Over_Flag == 1) break; } } // 游戏设置安排存在较大问题 void Game_Help(void) { char ch; system("cls"); printf("游戏版本:1.0\n"); printf("w,a,s,d控制移动,死亡后返回主菜单\n"); while((ch = getch()) == 'q') { system("cls"); return; } } void Game_Setting(void) { char ch; system("cls"); printf ("默认速度设置: 50\n"); printf("_________________\n"); printf("当前速度设置: %d\n", snakespeed); printf("请输入蛇的速度值大小\n"); scanf("%d", &snakespeed); printf("请稍后, 系统正在处理中.........\n"); Sleep(1000); printf("设置完毕!\n"); while((ch = getch()) == 'q') { system("cls"); return; } } void Game_Over() { system("cls"); gotoxy(MAP_WIDTH/2, MAP_HEIGHT/2); printf("游戏结束!!!\n"); Sleep(2000); system("cls"); return; } void gotoxy(int x, int y) { COORD coord; coord.X = x; coord.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord); } 写了一个贪吃蛇,能运行, 可以玩,但是死过一次后再在主菜单调用Start_Game开始游戏时会闪退, 怎么回事 数据定义在头文件里

如何使用vs2013编写贪吃蛇详细步骤

我使用vs2013编译贪吃蛇,但一直显示错误,百度搜索不知道在那里修改属性框架 希望可以有详细一点的步骤。 这样好理解运行,谢谢你的帮助,我还是新手,希望多多指教。

C++贪吃蛇问题,请帮帮我。

想写贪吃蛇,想知道食物的随机出现应该怎么使用随机数?用二维数组的话,是随机每个坐标,然后让食物显示在随机的地方吗?

用APP inventor做一个贪吃蛇的话要怎么解决一些问题

怎么解决吃一个东西的时候尾巴增长,而且还要能随机生成一个不在贪吃蛇身上的食物,

贪吃蛇程序,开始可正常操作,按下控制按钮后按键操作不能用

我写了个贪吃蛇程序,用c++ + windows编程写的,左边是游戏区,右边有暂停,加减速等按钮,刚开始可正常操作贪吃蛇,但是在按下按钮后再用上下左右操作就没反应了,不知道为什么?求大神解答 #include <windows.h> #include <vector> #include <ctime> #include <iostream> using namespace std; //定义 游戏区 和 控制区 大小 #define BOUND_SIZE 10 //边框大小 #define SNAKE_SIZE 10 //贪吃蛇方块大小 #define GAME_WIDTH 80 //游戏区宽 #define GAME_HEIGHT 60 //长 #define INFO_WIDTH 30 //游戏信息区宽 #define INFO_HEIGHT GAME_HEIGHT //长 #define MAX_NODE 20 //蛇的最大长度 #define MY_TIMER 1 //定时器ID #define DE_INTERVAL 100 //定义贪吃蛇的默认移动速度--500毫秒/节 // 间隔 #define PAUSE_ID 1//暂停按钮 #define SPDUP_ID 2//加减速 #define SPDDOWN_ID 3 #define GAME_AGAIN_ID 4//游戏重新开始 #define BT_SIZE_WIDTH 10//按钮大小 #define BT_SIZE_HEIGHT 5 // 蛇 vector<POINT> vSnake; int headPos, tailPos; // 头尾的位置 int len; // 长度 int interval; // 速度 POINT direct; // 方向 - 横移 bool needsFood = true; // 是否需要食物 POINT ptFood; // 食物坐标 bool bPause = false; // 暂停状态 enum Status {CONTINUE, WIN, LOST}; Status g_status; //游戏状态 LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPreInstance, PSTR szCmdLine, int iCmdShow) { static TCHAR szAppName[] = TEXT("HelloWin"); HWND hwnd; MSG msg; WNDCLASS wndclass; wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = WndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = hInstance; wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); wndclass.lpszMenuName = NULL; wndclass.lpszClassName = szAppName; if (!RegisterClass(&wndclass)) { MessageBox(NULL, TEXT("This program requires Windows NT!"), szAppName, MB_ICONERROR); return 0; } hwnd = CreateWindow(szAppName, TEXT("The Hello Program"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); ShowWindow (hwnd, iCmdShow); UpdateWindow(hwnd); while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage (&msg); DispatchMessage (&msg); } return msg.wParam; } // 初始化蛇 void initSnake() { // 初始两个结点位置 vSnake.clear(); vSnake.resize(MAX_NODE); // 初始长度 len = 2; for (int i = 0; i < len; i++) { vSnake[i].x=i; vSnake[i].y=1; } // 初始尾巴在蛇身的位置 tailPos = 0; headPos = 1; interval = DE_INTERVAL; // 初始速度 direct = {1, 0}; // 初始方向 g_status = CONTINUE; // 初始化游戏状态 needsFood = true; // 需要食物 bPause = false; // 不暂停 } // 获取蛇的结点位置 POINT &getSnakeNode(int index) { int i = tailPos + index; // 尽量在更局部的地方修改变量以增加可维护性-tailPos if(i >= MAX_NODE) { i -= MAX_NODE; } return vSnake[i]; } // 画蛇 void drawSnake(HDC hdc) { int i; POINT ptNode; HBRUSH hBrush = (HBRUSH) GetStockObject (WHITE_BRUSH); //贪吃蛇块上色 SelectObject(hdc, hBrush); /* 也可以for(i = tail; i < head; i++) 但是需要判断head大于界值后从0续起的情况 */ for(i = 0; i < len; i++) { //从蛇尾开始画 ptNode = getSnakeNode(i); Rectangle(hdc, ptNode.x * SNAKE_SIZE + BOUND_SIZE, ptNode.y * SNAKE_SIZE + BOUND_SIZE, (ptNode.x + 1) * SNAKE_SIZE + BOUND_SIZE, (ptNode.y + 1) * SNAKE_SIZE + BOUND_SIZE); } } // 画食物 void drawFood(HDC hdc) { POINT ptNode; int x, y; int i = 0; HBRUSH hBrush=(HBRUSH)GetStockObject(BLACK_BRUSH); if (needsFood) { srand(time(0)); //随机数种子 //获取随机坐标,不为蛇身 while(i != len) { x=rand() % (GAME_WIDTH - 1); y=rand() % (GAME_HEIGHT - 1); for(i = 0; i < len; i++) // 食物是否在蛇身,若在则直接退出 { ptNode = getSnakeNode(i); if(ptNode.x == x && ptNode.y == y) break; } } ptFood.x = x; ptFood.y = y; needsFood = false; } SelectObject(hdc,hBrush); // 选取画刷 Ellipse(hdc, BOUND_SIZE + ptFood.x * SNAKE_SIZE, // 画食物 BOUND_SIZE + ptFood.y * SNAKE_SIZE, BOUND_SIZE + (ptFood.x + 1) * SNAKE_SIZE, BOUND_SIZE + (ptFood.y + 1) * SNAKE_SIZE); } // 刷新蛇的状态(移动) void refreshSnake() { POINT newNode; newNode.x = vSnake[headPos].x + direct.x; newNode.y = vSnake[headPos].y + direct.y; // 吃到食物 - 尾不变,头 + 1 if (!needsFood && newNode.x == ptFood.x && newNode.y == ptFood.y) { len++; needsFood = true; if (len == MAX_NODE) { g_status = WIN; } headPos = headPos + 1 >= MAX_NODE ? 0 : headPos + 1; vSnake[headPos] = newNode; return; } // 蛇撞墙 if (newNode.x < 0 || newNode.x >= GAME_WIDTH || newNode.y < 0 || newNode.y >= GAME_HEIGHT) { g_status = LOST; return; } POINT ptNode; // 蛇碰到自己的身体 for (int i = 0; i < len; i++) { ptNode = getSnakeNode(i); if (ptNode.x == newNode.x && ptNode.y == newNode.y) { g_status = LOST; return; } } headPos = headPos + 1 >= MAX_NODE ? 0 : headPos + 1; tailPos = tailPos + 1 >= MAX_NODE ? 0 : tailPos + 1; vSnake[headPos] = newNode; } LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; HDC hdc; PAINTSTRUCT ps; RECT rect; HBRUSH hBrush; int nWinW, nWinH, nClientW, nClientH; // 窗口和客户区的长宽 static HWND hPause; //暂停 static HWND hSpdUp; //加速 static HWND hSpdDown; //减速 static HWND hStartAgain; //重新开始 switch (message) { case WM_CREATE: GetWindowRect(hwnd,&rect); // 绘制窗口大小,获取外窗口大小 nWinW = rect.right-rect.left; nWinH = rect.bottom-rect.top; GetClientRect(hwnd,&rect); // 客户区大小,内窗口大小 nClientW = rect.right-rect.left; nClientH = rect.bottom-rect.top; //修改窗口大小,客户区大小+边框大小(nWinX-nClientX外边框) MoveWindow(hwnd, 0, 0, (GAME_WIDTH + INFO_WIDTH) * SNAKE_SIZE + BOUND_SIZE * 3 + (nWinW - nClientW), (GAME_HEIGHT * SNAKE_SIZE + BOUND_SIZE * 2 + (nWinH-nClientH)), TRUE); hStartAgain = CreateWindow(TEXT("BUTTON"), TEXT("重新开始"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 2 * BOUND_SIZE + GAME_WIDTH * SNAKE_SIZE + (INFO_WIDTH - BT_SIZE_WIDTH) * SNAKE_SIZE / 2, (INFO_HEIGHT - BT_SIZE_HEIGHT * 5) * SNAKE_SIZE / 2 - BOUND_SIZE, BT_SIZE_WIDTH * SNAKE_SIZE, BT_SIZE_HEIGHT * SNAKE_SIZE, hwnd, (HMENU) GAME_AGAIN_ID, ((LPCREATESTRUCT) lParam) -> hInstance, NULL); // 重新开始按钮,位置(横,纵,长宽) hPause = CreateWindow(TEXT("BUTTON"), TEXT("暂停"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 2 * BOUND_SIZE + GAME_WIDTH * SNAKE_SIZE + (INFO_WIDTH - BT_SIZE_WIDTH) * SNAKE_SIZE / 2, (INFO_HEIGHT - BT_SIZE_HEIGHT * 3) * SNAKE_SIZE / 2, BT_SIZE_WIDTH * SNAKE_SIZE, BT_SIZE_HEIGHT * SNAKE_SIZE, hwnd, (HMENU) PAUSE_ID, ((LPCREATESTRUCT) lParam) -> hInstance, NULL); // 暂停按钮,位置(横,纵,长宽) hSpdUp = CreateWindow(TEXT("BUTTON"), TEXT("速度加快"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 2 * BOUND_SIZE + GAME_WIDTH * SNAKE_SIZE + (INFO_WIDTH - BT_SIZE_WIDTH) * SNAKE_SIZE / 2, BOUND_SIZE + (INFO_HEIGHT - BT_SIZE_HEIGHT * 3) * SNAKE_SIZE / 2 + BT_SIZE_HEIGHT * SNAKE_SIZE, BT_SIZE_WIDTH * SNAKE_SIZE, BT_SIZE_HEIGHT * SNAKE_SIZE, hwnd, (HMENU) SPDUP_ID, ((LPCREATESTRUCT) lParam) -> hInstance, NULL); //加速按钮,位置(横,纵,长宽) hSpdDown = CreateWindow(TEXT("BUTTON"), TEXT("速度减慢"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 2 * BOUND_SIZE + GAME_WIDTH * SNAKE_SIZE + (INFO_WIDTH - BT_SIZE_WIDTH) * SNAKE_SIZE / 2, BOUND_SIZE + (INFO_HEIGHT - BT_SIZE_HEIGHT * 3) * SNAKE_SIZE / 2 + BOUND_SIZE + BT_SIZE_HEIGHT * SNAKE_SIZE * 2, BT_SIZE_WIDTH * SNAKE_SIZE, BT_SIZE_HEIGHT * SNAKE_SIZE, hwnd, (HMENU) SPDDOWN_ID, ((LPCREATESTRUCT) lParam) -> hInstance, NULL); //减速按钮,位置(横,纵,长宽) initSnake(); SetTimer(hwnd, MY_TIMER, interval, NULL); //设置定时器 return 0; case WM_PAINT: hdc = BeginPaint(hwnd, &ps); hBrush = (HBRUSH) GetStockObject(GRAY_BRUSH); // 给游戏区和控制区上色 SelectObject(hdc, hBrush); Rectangle(hdc, BOUND_SIZE, BOUND_SIZE, // 游戏区 BOUND_SIZE + GAME_WIDTH * SNAKE_SIZE, BOUND_SIZE + GAME_HEIGHT * SNAKE_SIZE); Rectangle(hdc, // 控制区 BOUND_SIZE * 2 + GAME_WIDTH * SNAKE_SIZE, BOUND_SIZE, BOUND_SIZE + (GAME_WIDTH + INFO_WIDTH) * SNAKE_SIZE, BOUND_SIZE + INFO_HEIGHT * SNAKE_SIZE); drawSnake(hdc); drawFood(hdc); EndPaint (hwnd, &ps); return 0; case WM_TIMER: //移动蛇 refreshSnake(); if (g_status != CONTINUE) { KillTimer(hwnd, MY_TIMER); (g_status == WIN) ? MessageBox(NULL, TEXT("你赢了"), TEXT("Win"), MB_OK) : MessageBox(NULL,TEXT("你输了"), TEXT("Fail"), MB_OK); initSnake(); } InvalidateRect(hwnd,NULL,TRUE); return 0; case WM_KEYDOWN: switch(wParam) { case VK_UP: //调节方向(向原来方向或相反方向时不反应) if(direct.x!=0) { direct.x=0; direct.y=-1; } break; case VK_DOWN: if(direct.x!=0) { direct.x=0; direct.y=1; } break; case VK_LEFT: if(direct.y!=0) { direct.x=-1; direct.y=0; } break; case VK_RIGHT: if(direct.y!=0) { direct.x=1; direct.y=0; } break; } return 0; case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // 分析菜单选择: switch (wmId) { case GAME_AGAIN_ID: KillTimer(hwnd, MY_TIMER); initSnake(); SetTimer(hwnd, MY_TIMER, interval, NULL); break; case PAUSE_ID: if(bPause) { bPause = false; SetWindowText(hPause, TEXT("暂停")); SetTimer(hwnd, MY_TIMER, interval, NULL); } else { bPause = true; SetWindowText(hPause, TEXT("继续")); KillTimer(hwnd, MY_TIMER); } break; case SPDUP_ID: if(interval >= 100) { interval -= 50; KillTimer(hwnd, MY_TIMER); SetTimer(hwnd, MY_TIMER, interval, NULL); } break; case SPDDOWN_ID: if(interval <= 500) { interval += 50; KillTimer(hwnd, MY_TIMER); SetTimer(hwnd, MY_TIMER, interval, NULL); } break; default: return DefWindowProc(hwnd, message, wParam, lParam); } return 0; case WM_DESTROY: KillTimer(hwnd,MY_TIMER); PostQuitMessage(0); return 0; } return DefWindowProc (hwnd, message, wParam, lParam); }

Python数据挖掘简易入门

&nbsp; &nbsp; &nbsp; &nbsp; 本课程为Python数据挖掘方向的入门课程,课程主要以真实数据为基础,详细介绍数据挖掘入门的流程和使用Python实现pandas与numpy在数据挖掘方向的运用,并深入学习如何运用scikit-learn调用常用的数据挖掘算法解决数据挖掘问题,为进一步深入学习数据挖掘打下扎实的基础。

HoloLens2开发入门教程

本课程为HoloLens2开发入门教程,讲解部署开发环境,安装VS2019,Unity版本,Windows SDK,创建Unity项目,讲解如何使用MRTK,编辑器模拟手势交互,打包VS工程并编译部署应用到HoloLens上等。

2019 Python开发者日-培训

本次活动将秉承“只讲技术,拒绝空谈”的理念,邀请十余位身处一线的Python技术专家,重点围绕Web开发、自动化运维、数据分析、人工智能等技术模块,分享真实生产环境中使用Python应对IT挑战的真知灼见。此外,针对不同层次的开发者,大会还安排了深度培训实操环节,为开发者们带来更多深度实战的机会。

Only老K说-爬取妹子图片(简单入门)

安装第三方请求库 requests 被网站禁止了访问 原因是我们是Python过来的 重新给一段 可能还是存在用不了,使用网页的 编写代码 上面注意看匹配内容 User-Agent:请求对象 AppleWebKit:请求内核 Chrome浏览器 //请求网页 import requests import re //正则表达式 就是去不规则的网页里面提取有规律的信息 headers = { 'User-Agent':'存放浏览器里面的' } response = requests.get

2020_五一数学建模_C题_整理后的数据.zip

该数据是我的程序读取的数据,仅供参考,问题的解决方案:https://blog.csdn.net/qq_41228463/article/details/105993051

R语言入门基础

本课程旨在帮助学习者快速入门R语言: 课程系统详细地介绍了使用R语言进行数据处理的基本思路和方法。 课程能够帮助初学者快速入门数据处理。 课程通过大量的案例详细地介绍了如何使用R语言进行数据分析和处理 课程操作实际案例教学,通过编写代码演示R语言的基本使用方法和技巧

人才招聘系统PHP+MySQL源码

PHP 5.0及以上 + MySQL 5.0及以上 开发的人才招聘系统完全可运行源码,按照操作说明简单配置即可运行。学习PHPWEB应用的完整系统程序源码。

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

python可视化分析(matplotlib、seaborn、ggplot2)

python可视化分析总结(matplotlib、seaborn、ggplot)一、matplotlib库1、基本绘图命令3、图形参数设置4、特殊统计图的绘制4.1 数学函数图4.2 气泡图4.1 三维曲面图二、seaborn库1、常用统计图1.1 箱线图1.2 小提琴图1.3 点图1.4 条图与计数图1.5 分组图1.6 概率分布图2、联合图3、配对图三、ggplot库1、图层画法+常用图形2、快速绘图 一、matplotlib库 1、基本绘图命令 import matplotlib.pyplot as

Vue.js 2.0之全家桶系列视频课程

基于新的Vue.js 2.3版本, 目前新全的Vue.js教学视频,让你少走弯路,直达技术前沿! 1. 包含Vue.js全家桶(vue.js、vue-router、axios、vuex、vue-cli、webpack、ElementUI等) 2. 采用笔记+代码案例的形式讲解,通俗易懂

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

课程主要面向嵌入式Linux初学者、工程师、学生 主要从一下几方面进行讲解: 1.linux学习路线、基本命令、高级命令 2.shell、vi及vim入门讲解 3.软件安装下载、NFS、Samba、FTP等服务器配置及使用

人工智能-计算机视觉实战之路(必备算法+深度学习+项目实战)

系列课程主要分为3大阶段:(1)首先掌握计算机视觉必备算法原理,结合Opencv进行学习与练手,通过实际视项目进行案例应用展示。(2)进军当下最火的深度学习进行视觉任务实战,掌握深度学习中必备算法原理与网络模型架构。(3)结合经典深度学习框架与实战项目进行实战,基于真实数据集展开业务分析与建模实战。整体风格通俗易懂,项目驱动学习与就业面试。 建议同学们按照下列顺序来进行学习:1.Python入门视频课程 2.Opencv计算机视觉实战(Python版) 3.深度学习框架-PyTorch实战/人工智能框架实战精讲:Keras项目 4.Python-深度学习-物体检测实战 5.后续实战课程按照自己喜好选择就可以

【大总结2】大学两年,写了这篇几十万字的干货总结

本文十天后设置为粉丝可见,喜欢的提前关注 不要白嫖请点赞 不要白嫖请点赞 不要白嫖请点赞 文中提到的书我都有电子版,可以评论邮箱发给你。 文中提到的书我都有电子版,可以评论邮箱发给你。 文中提到的书我都有电子版,可以评论邮箱发给你。 本篇文章应该算是Java后端开发技术栈的,但是大部分是基础知识,所以我觉得对任何方向都是有用的。 1、数据结构 数据结构是计算机存储、...

lena全身原图(非256*256版本,而是全身原图)

lena全身原图(非256*256版本,而是全身原图) lena原图很有意思,我们通常所用的256*256图片是在lena原图上截取了头部部分的256*256正方形得到的. 原图是花花公子杂志上的一个

【项目实战】 图书信息管理系统(Maven,mybatis)(第一个自己独立完成的项目)

《程序设计综合训练实践报告》 此项目为图书信息管理系统,是一个采用了mysql+mybatis框架+java编写的maven项目

图书管理系统(Java + Mysql)我的第一个完全自己做的实训项目

图书管理系统 Java + MySQL 完整实训代码,MVC三层架构组织,包含所有用到的图片资源以及数据库文件,大三上学期实训,注释很详细,按照阿里巴巴Java编程规范编写

Python入门视频精讲

Python入门视频培训课程以通俗易懂的方式讲解Python核心技术,Python基础,Python入门。适合初学者的教程,让你少走弯路! 课程内容包括:1.Python简介和安装 、2.第一个Python程序、PyCharm的使用 、3.Python基础、4.函数、5.高级特性、6.面向对象、7.模块、8.异常处理和IO操作、9.访问数据库MySQL。教学全程采用笔记+代码案例的形式讲解,通俗易懂!!!

20行代码教你用python给证件照换底色

20行代码教你用python给证件照换底色

2018年全国大学生计算机技能应用大赛决赛 大题

2018年全国大学生计算机技能应用大赛决赛大题,程序填空和程序设计(侵删)

MySQL数据库从入门到实战应用

限时福利1:购课进答疑群专享柳峰(刘运强)老师答疑服务 限时福利2:购课后添加学习助手(微信号:csdn590),按消息提示即可领取编程大礼包! 为什么说每一个程序员都应该学习MySQL? 根据《2019-2020年中国开发者调查报告》显示,超83%的开发者都在使用MySQL数据库。 使用量大同时,掌握MySQL早已是运维、DBA的必备技能,甚至部分IT开发岗位也要求对数据库使用和原理有深入的了解和掌握。 学习编程,你可能会犹豫选择 C++ 还是 Java;入门数据科学,你可能会纠结于选择 Python 还是 R;但无论如何, MySQL 都是 IT 从业人员不可或缺的技能! 【课程设计】 在本课程中,刘运强老师会结合自己十多年来对MySQL的心得体会,通过课程给你分享一条高效的MySQL入门捷径,让学员少走弯路,彻底搞懂MySQL。 本课程包含3大模块:&nbsp; 一、基础篇: 主要以最新的MySQL8.0安装为例帮助学员解决安装与配置MySQL的问题,并对MySQL8.0的新特性做一定介绍,为后续的课程展开做好环境部署。 二、SQL语言篇: 本篇主要讲解SQL语言的四大部分数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL,学会熟练对库表进行增删改查等必备技能。 三、MySQL进阶篇: 本篇可以帮助学员更加高效的管理线上的MySQL数据库;具备MySQL的日常运维能力,语句调优、备份恢复等思路。 &nbsp;

C/C++学习指南全套教程

C/C++学习的全套教程,从基本语法,基本原理,到界面开发、网络开发、Linux开发、安全算法,应用尽用。由毕业于清华大学的业内人士执课,为C/C++编程爱好者的教程。

C/C++跨平台研发从基础到高阶实战系列套餐

一 专题从基础的C语言核心到c++ 和stl完成基础强化; 二 再到数据结构,设计模式完成专业计算机技能强化; 三 通过跨平台网络编程,linux编程,qt界面编程,mfc编程,windows编程,c++与lua联合编程来完成应用强化 四 最后通过基于ffmpeg的音视频播放器,直播推流,屏幕录像,

我以为我对Mysql事务很熟,直到我遇到了阿里面试官

太惨了,面试又被吊打

专为程序员设计的数学课

<p> 限时福利限时福利,<span>15000+程序员的选择!</span> </p> <p> 购课后添加学习助手(微信号:csdn590),按提示消息领取编程大礼包!并获取讲师答疑服务! </p> <p> <br> </p> <p> 套餐中一共包含5门程序员必学的数学课程(共47讲) </p> <p> 课程1:《零基础入门微积分》 </p> <p> 课程2:《数理统计与概率论》 </p> <p> 课程3:《代码学习线性代数》 </p> <p> 课程4:《数据处理的最优化》 </p> <p> 课程5:《马尔可夫随机过程》 </p> <p> <br> </p> <p> 哪些人适合学习这门课程? </p> <p> 1)大学生,平时只学习了数学理论,并未接触如何应用数学解决编程问题; </p> <p> 2)对算法、数据结构掌握程度薄弱的人,数学可以让你更好的理解算法、数据结构原理及应用; </p> <p> 3)看不懂大牛代码设计思想的人,因为所有的程序设计底层逻辑都是数学; </p> <p> 4)想学习新技术,如:人工智能、机器学习、深度学习等,这门课程是你的必修课程; </p> <p> 5)想修炼更好的编程内功,在遇到问题时可以灵活的应用数学思维解决问题。 </p> <p> <br> </p> <p> 在这门「专为程序员设计的数学课」系列课中,我们保证你能收获到这些:<br> <br> <span> </span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">①价值300元编程课程大礼包</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">②应用数学优化代码的实操方法</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">③数学理论在编程实战中的应用</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">④程序员必学的5大数学知识</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">⑤人工智能领域必修数学课</span> </p> <p> <br> 备注:此课程只讲程序员所需要的数学,即使你数学基础薄弱,也能听懂,只需要初中的数学知识就足矣。<br> <br> 如何听课? </p> <p> 1、登录CSDN学院 APP 在我的课程中进行学习; </p> <p> 2、登录CSDN学院官网。 </p> <p> <br> </p> <p> 购课后如何领取免费赠送的编程大礼包和加入答疑群? </p> <p> 购课后,添加助教微信:<span> csdn590</span>,按提示领取编程大礼包,或观看付费视频的第一节内容扫码进群答疑交流! </p> <p> <img src="https://img-bss.csdn.net/201912251155398753.jpg" alt=""> </p>

Eclipse archetype-catalog.xml

Eclipse Maven 创建Web 项目报错 Could not resolve archetype org.apache.maven.archetypes:maven-archetype-web

使用TensorFlow+keras快速构建图像分类模型

课程分为两条主线: 1&nbsp;从Tensorflow的基础知识开始,全面介绍Tensorflow和Keras相关内容。通过大量实战,掌握Tensorflow和Keras经常用到的各种建模方式,参数优化方法,自定义参数和模型的手段,以及对训练结果评估与分析的技巧。 2&nbsp;从机器学习基础算法开始,然后进入到图像分类领域,使用MNIST手写数据集和CIFAR10图像数据集,从简单神经网络到深度神经网络,再到卷积神经网络,最终完成复杂模型:残差网络的搭建。完成这条主线,学员将可以自如地使用机器学习的手段来达到图像分类的目的。

Python代码实现飞机大战

文章目录经典飞机大战一.游戏设定二.我方飞机三.敌方飞机四.发射子弹五.发放补给包六.主模块 经典飞机大战 源代码以及素材资料(图片,音频)可从下面的github中下载: 飞机大战源代码以及素材资料github项目地址链接 ————————————————————————————————————————————————————————— 不知道大家有没有打过飞机,喜不喜欢打飞机。当我第一次接触这个东西的时候,我的内心是被震撼到的。第一次接触打飞机的时候作者本人是身心愉悦的,因为周边的朋友都在打飞机, 每

最近面试Java后端开发的感受:如果就以平时项目经验来面试,通过估计很难,不信你来看看

在上周,我密集面试了若干位Java后端的候选人,工作经验在3到5年间。我的标准其实不复杂:第一能干活,第二Java基础要好,第三最好熟悉些分布式框架,我相信其它公司招初级开发时,应该也照着这个标准来面的。 我也知道,不少候选人能力其实不差,但面试时没准备或不会说,这样的人可能在进团队干活后确实能达到期望,但可能就无法通过面试,但面试官总是只根据面试情况来判断。 但现实情况是,大多数人可能面试前没准备,或准备方法不得当。要知道,我们平时干活更偏重于业务,不可能大量接触到算法,数据结构,底层代码这类面试必问

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

微信小程序开发实战之番茄时钟开发

微信小程序番茄时钟视频教程,本课程将带着各位学员开发一个小程序初级实战类项目,针对只看过官方文档而又无从下手的开发者来说,可以作为一个较好的练手项目,对于有小程序开发经验的开发者而言,可以更好加深对小程序各类组件和API 的理解,为更深层次高难度的项目做铺垫。

相关热词 c#对文件改写权限 c#中tostring c#支付宝回掉 c#转换成数字 c#判断除法是否有模 c# 横向chart c#控件选择多个 c#报表如何锁定表头 c#分级显示数据 c# 不区分大小写替换
立即提问
相关内容推荐