写在最后
可能有人会问我为什么愿意去花时间帮助大家实现求职梦想,因为我一直坚信时间是可以复制的。我牺牲了自己的大概十个小时写了这片文章,换来的是成千上万的求职者节约几天甚至几周时间浪费在无用的资源上。
上面的这些(算法与数据结构)+(Java多线程学习手册)+(计算机网络顶级教程)等学习资源
private static final int READY_HEIGHT = ImageMgr.ready.getHeight();
private static final int START_WIDTH = ImageMgr.start.getWidth();
private static final int BIRD_WIDTH = ImageMgr.bird[0].getWidth();
private static final int BIRD_HEIGHT = ImageMgr.bird[0].getWidth();
private static final int GROUND_HEIGHT = ImageMgr.ground.getHeight();
private static final int GAME_OVER_WIDTH = ImageMgr.gameOver.getWidth();
private static final int GAME_OVER_HEIGHT = ImageMgr.gameOver.getHeight();
private static final int BACKGROUND_HEIGHT = ImageMgr.background.getHeight();
private static Image offScreenImage;
private static Rectangle pipeRectangle1;
private static Rectangle pipeRectangle2;
private static Rectangle birdRectangle;
Cuckoo(){
setVisible(true);
setResizable(false);
//setTitle("cuckoo");
setBounds(L_X, L_Y,GAME_WIDTH,GAME_HEIGHT);
addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()){
case KeyEvent.VK_SPACE : start = true;break;
case KeyEvent.VK_ENTER : reopen();break;
}
}
@Override
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_UP) {
bird_y -= 20;
}
}
});
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
@Override
public void update(Graphics g) {
if(offScreenImage == null){
offScreenImage = this.createImage(GAME_WIDTH,GAME_HEIGHT);
}
Graphics gOffScreen = offScreenImage.getGraphics();
Color c = gOffScreen.getColor();
gOffScreen.setColor(Color.BLACK);
gOffScreen.fillRect(0,0,GAME_WIDTH,GAME_HEIGHT);
gOffScreen.setColor(c);
paint(gOffScreen);
g.drawImage(offScreenImage,0,0,null);
}
@Override
public void paint(Graphics g) {
background(g);
ground(g);
start(g);
if(start){
bird(g);
pipe(g);
colliedWith();
gameOver(g);
score(g);
}
}
//如果碰撞后,可以嗯enter键重开
private void reopen(){
if(crash){
score = 0;
over = false;
crash = false;
start = false;
moveLeft = 0;
pipeMove = 0;
//bird\_y = 270;//继上次死的位置开始
}
}
private void score(Graphics g){
Font font = new Font("微软雅黑",Font.BOLD,18);
g.setFont(font);
Color c = g.getColor();
g.setColor(Color.lightGray);
g.drawString("score " + score,20,70);
g.setColor(c);
}
private void background(Graphics g){
g.drawImage(ImageMgr.background,
GAME_X_Y_0 - moveLeft,GAME_X_Y_0,
GAME_WIDTH - moveLeft,GAME_HEIGHT,
GAME_X_Y_0,
GAME_X_Y_0,
GAME_WIDTH,
GAME_HEIGHT, null);
g.drawImage(ImageMgr.background,
GAME_WIDTH-1 - moveLeft,GAME_X_Y_0,
GAME_WIDTH\*2 - moveLeft, GAME_HEIGHT,
GAME_X_Y_0,
GAME_X_Y_0,
GAME_WIDTH,
GAME_HEIGHT, null);
moveLeft += SPEED;
//游戏启动计分
if(start && moveLeft % 100 == 0){
score += 1;
}
if(moveLeft >= GAME_WIDTH){
moveLeft = 0;
}
}
private void ground(Graphics g){
g.drawImage(ImageMgr.ground,0,BACKGROUND_HEIGHT - GROUND_HEIGHT,null);
}
private void bird(Graphics g){
Color c = g.getColor();
g.setColor(Color.BLUE);
g.drawRect(BIRD_X, bird_y,BIRD_WIDTH,BIRD_HEIGHT);
g.setColor(c);
g.drawImage(ImageMgr.bird[step++], BIRD_X, bird_y,null);
if(step >= ImageMgr.bird.length){
step = 0;
}
if(start){
bird_y += 4;
}
birdRectangle = new Rectangle(BIRD_X,bird_y,BIRD_WIDTH,BIRD_HEIGHT);
}
private void pipe(Graphics g){
drawPipe(g);
pipeMove += SPEED;
if(pipeMove >= GAME_WIDTH + PIPE_WIDTH){
pipeMove = 0;
Random ran = new Random();
height = ran.nextInt(10)\*20;
drawPipe(g);
}
}
private void drawPipe(Graphics g){
g.setColor(Color.RED);
// g.drawRect(GAME_WIDTH - pipeMove,GAME_HEIGHT/5*3 - height,PIPE_WIDTH,PIPE_HEIGHT);
// g.drawRect(GAME_WIDTH - pipeMove,-GAME_HEIGHT/5*4 - height,PIPE_WIDTH,PIPE_HEIGHT);
g.drawImage(ImageMgr.pipe,GAME_WIDTH - pipeMove,GAME_HEIGHT/5\*3 - height,null);
g.drawImage(ImageMgr.pipe,GAME_WIDTH - pipeMove,-GAME_HEIGHT/5\*4 - height,null);
pipeRectangle1 = new Rectangle(GAME_WIDTH - pipeMove,GAME_HEIGHT/5\*3 - height,PIPE_WIDTH,PIPE_HEIGHT);
pipeRectangle2 = new Rectangle(GAME_WIDTH - pipeMove,-GAME_HEIGHT/5\*4 - height,PIPE_WIDTH,PIPE_HEIGHT);
}
private void gameOver(Graphics g){
if(over){
g.drawImage(ImageMgr.gameOver,GAME_WIDTH/2 - GAME_OVER_WIDTH/2, GAME_HEIGHT/2 - GAME_OVER_HEIGHT,null);
}
}
private void start(Graphics g){
if(!start){
g.drawImage(ImageMgr.ready,GAME_WIDTH/2 - READY_WIDTH/2, GAME_HEIGHT/2 - READY_HEIGHT,null);
g.drawImage(ImageMgr.start,GAME_WIDTH/2 - START_WIDTH/2, GAME_HEIGHT/2,null);
}
}
private void colliedWith(){
if(birdRectangle.intersects(pipeRectangle1) || birdRectangle.intersects(pipeRectangle2)){
crash = true;
over = true;
//gameOver(g);
}
}
}
工具类
public class ImageMgr {
static BufferedImage background,ground,pipe,gameOver,start,ready;
static BufferedImage[] bird = new BufferedImage[3];
private static final ImageMgr INSTANCE = new ImageMgr();
//nothing
private ImageMgr(){
initImage();
};
private void initImage(){
try {
background = ImageIO.read(Objects.requireNonNull(Cuckoo.class.getClassLoader().getResourceAsStream("images/bg\_light.png")));
ground = ImageIO.read(Objects.requireNonNull(Cuckoo.class.getClassLoader().getResourceAsStream("images/ground.png")));
pipe = ImageIO.read(Objects.requireNonNull(Cuckoo.class.getClassLoader().getResourceAsStream("images/pipe.png")));
gameOver = ImageIO.read(Objects.requireNonNull(Cuckoo.class.getClassLoader().getResourceAsStream("images/gameover.png")));
start = ImageIO.read(Objects.requireNonNull(Cuckoo.class.getClassLoader().getResourceAsStream("images/start.png")));
ready = ImageIO.read(Objects.requireNonNull(Cuckoo.class.getClassLoader().getResourceAsStream("images/ready.png")));
for(int i = 0;i < 3;i++){
bird[i] = ImageIO.read(Objects.requireNonNull(Cuckoo.class.getClassLoader().getResourceAsStream("images/blueBird\_" + (i+1) + ".png")));
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
public static ImageMgr getInstance(){
return INSTANCE;
}
}
感受:
其实我投简历的时候,都不太敢投递阿里。因为在阿里一面前已经过了字节的三次面试,投阿里的简历一直没被捞,所以以为简历就挂了。
特别感谢一面的面试官捞了我,给了我机会,同时也认可我的努力和态度。对比我的面经和其他大佬的面经,自己真的是运气好。别人8成实力,我可能8成运气。所以对我而言,我要继续加倍努力,弥补自己技术上的不足,以及与科班大佬们基础上的差距。希望自己能继续保持学习的热情,继续努力走下去。
也祝愿各位同学,都能找到自己心动的offer。
分享我在这次面试前所做的准备(刷题复习资料以及一些大佬们的学习笔记和学习路线),都已经整理成了电子文档
所做的准备(刷题复习资料以及一些大佬们的学习笔记和学习路线),都已经整理成了电子文档
[外链图片转存中…(img-enlH7H7j-1714839680104)]