会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132454个问题
Python 全系列/第二阶段:Python 深入与提高/模块 31578楼
JAVA 全系列/第五阶段:JavaWeb开发/Servlet技术详解(旧) 31579楼
WEB前端全系列/第七阶段:ECMAScript6新特性模块/ES6第一部分 31584楼

我的这个代码怎么按下键盘的上下左右  控制台没有输出

"""
新增功能
     添加事件
     1点击关闭 关闭窗口
     2按下键盘时候,判断键盘按下的是什么键,做如何处理

"""
import pygame
SCREEN_WIDTH=700
SCREEN_HEIGHT=500
BG_COLOR=pygame.Color(0,0,0)
class MainGame():
    window=None
    def __init__(self):
        pass
    #开始游戏
    def startGame(self):
        #加载主窗口
        pygame.display.init()
        #设置窗口的大小及显示
        MainGame.window=pygame.display.set_mode([SCREEN_HEIGHT,SCREEN_HEIGHT])
        #设置窗口的标题
        pygame.display.set_caption("坦克大战1.03")
        while True:
            #给窗口设置填充色
            MainGame.window.fill(BG_COLOR)
            #获取事件
            self.getEvent()
            pygame.display.update()

    #结束游戏
    def endGame(self):
        print("谢谢使用,欢迎再来")
        exit()

    #获取事件
    def getEvent(self):
        #获取所有事件
        eventList=pygame.event.get()
         #遍历事件
        for event in eventList:
            #判读按下的是关闭还是键盘
            #如果安的是退出,
            if event.type==pygame.QUIT:
                self.endGame()
                #如果是键盘的按下
                if event.type==pygame.KEYDONW:
                    #判断按下的是上,下,左,右
                    if event.key==pygame.K_LEFT:
                        print("按下左键,坦克向左移动")
                    elif event.key==pygame.K_RIGHT:
                        print("按下右键,坦克向右移动")
                    elif event.key==pygame.K_UP:
                        print("按下右键,坦克向上动")
                    elif event.key==pygame.K_DOWN:
                         print("按下右键,坦克向右下动")


class Tank():
    def __init__(self):
        pass
    #移动
    def move(self):
        pass


    #射击
    def shot(self):
        pass
    #展示坦克的方法
    def display(self):
        pass
#我方坦克
class MyTank(Tank):
    def __init__(self):
        pass

class EnemyTank(Tank):
    def __init__(self):
        pass

#子弹类
class Bullet():
    def __init__(self):
        pass
    #移动
    def move(self):
        pass
    #展示子弹的方法
    def displayBullet(self):
        pass


class Wall():
    def __init__(self):
        pass
     #展示墙壁的方法
    def displayWall(self):
        pass
class Explode():
    def __init__(self):
        pass
    #展示爆炸效果的方法
    def displayExplode(self):
        pass
class Music():
    def __init__(self):
        pass
    #播放音乐
    def play(self):
        pass
if __name__=="__main__":
    MainGame().startGame()


Python 全系列/第二阶段:Python 深入与提高/游戏开发-坦克大战 31585楼

老师好,我运行了之后客户端收到的信息是乱码,这个怎么解决呢?

客户端代码:

package com.bjsxt.client;


import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class Test {
    public static void main(String[] args) throws IOException {
        //(1)创建Socket对象
        Socket client = new Socket("127.0.0.1", 9999);
        //(2)获取输出流
        OutputStream os = client.getOutputStream();
        os.write('a');
        //(3)获取输入流
        InputStream is = client.getInputStream();
        byte [] buf = new byte[1024];
        int len=0;//读到的字节的个数
        while ((len=is.read())!= -1){
            System.out.println(new String(buf,0,len));
        }
        //(4)关闭流
        if (is!=null){
            is.close();
        }
        if(os!=null){
            os.close();
        }
        if (client!=null){
            client.close();
        }
    }
}

服务端代码:

package com.bjsxt.server;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Test {
    public static void main(String[] args) throws IOException {
        System.out.println("----------服务器端已启动-----------");
        //(1)创建ServerSocket对象

        ServerSocket server = new ServerSocket(9999);

        //(2)监听是否有客户端来请求连接
        Socket client = server.accept();
        //(3)获取输入流
        InputStream is = client.getInputStream();
        System.out.println((char) is.read());

        //(4)获取输出流
        OutputStream os = client.getOutputStream();
        os.write("收到了!".getBytes());
        //(5)关闭流,关闭Socket
        if (os!=null){
            os.close();
        }
        if (is!=null){
            is.close();
        }
        if (client!=null){
            client.close();
        }
    }
}

运行结果:

image.png

image.png

JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程(旧) 31586楼
WEB前端全系列/第七阶段:ECMAScript6新特性模块/ES6第一部分 31588楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637